Collapse AllExpand All

2. 이미 형태소 분석된 사전 파일을 이용하는 방법

위의 방법 (검색엔진에 요청하여 형태소를 분석하는 방법)은 컴파일 속도도 매우 느릴 뿐만 아니라 엔진의 성능에도 악영향을 미칠 수 있다. 또 다른 방법은 사전 파일에 형태소 분석 결과를 미리 포함시키는 것이다.

참고

이 방식의 경우에는 검색 엔진 Admin을 통해 사전 파일을 관리할 수 없다. 형태소 분석 함수인 KEYWORD_EX는 검색엔진 v4.2에서 지원된다.

검색엔진 v4.3 이상인 경우에는 KEYWORD_EX의 사용법이 변경되었으니 검색엔진의 매뉴얼을 참조한다.

예제

아래의 예제는 상품 볼륨의 제목으로 자동완성 사전을 만드는 예이다. 유사한 방식으로 사전 파일을 만들 수 있다. KQL 스크립트를 이용한다.

use volume product;

export records from product to ./product format prod_name="<__prod_name__>";

create volume temp;
use volume temp;

create table akc
(
title string null;
keyword string null;
Tag
keyword = KEYWORD_EX (title)
);

create gateway gw on akc to file system format title="<__prod_name__>";

import files ./product/0000 *.txt to akc through gw operation store;

export records from akc to ./akc.0 format title="<__title__>", keyword="<__keyword__>";

예제의 KQL을 실행시키면 akc.0 라는 디렉터리에 아래와 같이 형태소 분석을 포함하는 벌크 덤프 파일들이 생성된다.

참고

아래 예제의 akc.0 디렉터리 형식은 akc.[도메인번호] 이다.

$ find  akc.0 -type f -print
akc.0/0000/0000.txt
akc.0/0000/0001.txt
…
akc.0/0001/0000.txt
akc.0/0001/0001.txt
…

$ tree akc.0
akc.0
|-- 0000
|   |-- 0000.txt
|   |-- 0001.txt
`-- 0001
    |-- 0000.txt
    `-- 0001.txt

$ cat ./0000/0000.txt
<__title__>문명의 고향 티그리스 강을 걷다
<__keyword__>강 걷다 고향 문명 티그리스
<__title__>물질 영역의 초등과학 교재연구
<__keyword__>과학 교재 물질 연구 영역 초등
…

이제 덤프 파일을 포함하는 akc.0 디렉터리를 서비스 프레임워크 디렉터리의 사전 디렉터리로 이동시키고 설정 파일을 아래와 같이 수정한다.

$ cat akc-conf.0.rc
modes=t
prefixes=<__title__> <__keyword__>
charset=euc-kr

저장된 덤프 파일들의 인코딩에 따라 charset을 설정한다. 덤프 파일의 각 라인으로부터 키워드와 형태소분석결과를 구별하기 위해 prefixes를 설정한다. prefixes는 덤프 파일의 각 라인 앞에 있는 구분자이다. 설정 파일에는 공백으로 구분한다. 첫 번째는 자동완성 사전에서 검색할 문자열에 해당하는 prefix, 마지막은 형태소 분석 결과 라인의 prefix, 가운데는 메타 정보 라인의 prefix를 기술하면 된다.

예를 들어, 메타1, 메타2 정보가 추가된다면

prefixes=<__title__> <__meta1__> <__meta2__> <__keyword__>

와 같은 식으로 설정하면 된다.