태깅은 정보를 관리하기 위한 좋은 방법이다. 완전히 공개된 서비스의 경우 태그관리가 까다롭다는 문제가 있지만, 추천시스템에 대한 노하우가 쌓이면서 많은 부분 해결이 된 것 같다.
Joinc는 개임위키이니 만큼 관리하기가 훨씬 쉽다. 태그라고 해봐야 100개가 넘지 않을 것 같은데, 이 정도라면 자동완성이나 추천에 신경쓰지 않고 단순하게 구성 할 수 있을 것이다. 자동완성쪽을 해보고 싶기는 한데, 이건 나중에 해볼 생각이다.
구성
태그 목록을 관리하는 테이블과 태깅 적용 정보를 가지는 두 개의 테이블로 구성된다.
관리자 계정으로 로그인하면, 태그를 관리 할 수 있다.
페이지 상단에 "현재 페이지 태깅" 메뉴가 추가된다.
태깅 관리 페이지로 넘어간다.
태깅 관리 페이지에는 사용 할 수 있는 태그 목록이 있다. 여기에서 태그를 선택한다.
아래와 같이 테이블을 만들었다.
CREATE TABLE joinctag (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE wikitagging (
id INT NOT NULL AUTO_INCREMENT,
tagid INT NOT NULL,
pageid INT NOT NULL,
FOREIGN KEY (`tagid`) REFERENCES `joinctag`(`id`),
PRIMARY KEY(id)
)
화면 UI 구성
인터넷을 뒤져서 적당히 보기 좋은 녀석을 찾았다. Vue.js로 테스트를 했다. 그럭저럭 괜찮은 것 같다.
태그리스트에서 원하는 태그를 클릭하면, 페이지에 태그로 붙는다. 자동완성으로 하는게 더 편할 수 있겠는데 일단은 쉬운 방법으로 했다.
name 은 태그 이름이고 pageid는 태그된 페이지의 ID(유일한 식별번호)다.
aws 태그를 기준으로 보면, Aurora 태그가 2, bigdata 태그가 1임을 알 수 있다. 데이터의 일부이지만 여기에서 우리는 aws 태그와 연관있는 테이블을 선택하고 (얼마나 가까운지)가중치를 줄 수 있을 것이다. 단순 카운트일 경우 Aurora는 2의 가중치 bigdata는 1의 가중치를 가진다. 만드는 방법을 생각해보자.
태그 이름 목록은 별도의 테이블에 가지고 있다. 이 테이블을 순환하면서 각 태그의 연관 태그를 계산하면 된다. 예를 들어 "aws"에 대한 연관태그는 아래와 같이 만들 수 있을 것이다.
"aws"가 태깅된 문서의 목록 - pageid - 를 얻는다.
pageid에 태깅된 태그 이름을 가져온다.
해당 태그 이름에 카운트 한다.
그 결과 aws와 관련된 s3, go, msa 태그를 얻을 수 있으며, 가중치(얼마나 많은 관련성이 있는지)도 계산 할 수 있다.
위에 있는 이미지의 데이터를 가지고 테스트코드를 만들었다.
Contents
태깅
구성
화면 UI 구성
태그 클라우드 만들기
Tags
관련 태그 만들기
태그 그래프 만들기
인기태그
유저별 태그 추천
Recent Posts
Archive Posts
Tags