서비스 프레임워크 설명서 |
이 장에서는 서비스 프레임워크가 제공하는 각 서비스의 사전 파일 작성 방법 및 환경 설정에 관해 기술한다.
서비스 프레임워크가 제공하는 각 서비스는 영문 약자로 이루어진 서비스명을 가진다. 일부 서비스들은 사전을 사용하는데, 동일 서비스가 사용할 수 있는 사전은 하나 이상일 수 있다. 이들 사전을 구분하기위해 도메인 번호를 사용하며, 기본 도메인 번호는 0부터 시작한다.
사전 파일들은 WEB-INF/default.properties 파일의 dictionary.home 프로퍼티로 설정된 디렉터리에 존재해야 한다.
svc-dict[.domain].ext
구분 | 설명 |
---|---|
svc | 서비스명
|
dict | 사전 종류
|
domain | 도메인 번호 |
ext | 확장자 시스템 사전의 경우 dat (편집 불가), 그 외의 경우 txt (편집 가능) |
시스템 사전(syst)은 서비스 프레임워크와 함께 배포되며 편집이 불가능하다. 그 외의 사전은 Admin을 통해 편집하거나, 텍스트 편집기로 직접 수정할 수 있다.
수정된 사전 파일은 컴파일 및 리로딩 과정을 거쳐야 서비스에 반영된다. 컴파일 및 리로딩은 Admin을 통해 명령할 수 있다. 혹은 아래와 같이 직접 명령어를 내려 수행할 수도 있다.
$ curl -A "KSF/1.0" "http://host:port/ksf/modules/reload?target=svc&domain_no=domain"
오타교정과 같이 도메인을 가지지 않는 서비스의 경우, domain 파라미터로 -1을 지정한다.
cURL 홈페이지(http://curl.haxx.se)에서 cURL 바이너리를 다운로드 받고, 사용법을 확인할 수 있다.
Konan Search 패키지를 설치한 경우, Admin과 서비스 프레임워크는 자동으로 설치/연동된다. 단독으로 설치하는 경우 아래 절차를 참고하여 Admin에 서비스 프레임워크를 연동한다.
웹브라우저를 통해 Admin에 접속한다. (예 : http://localhost:7614/admin-webapp)
[환경설정] > [엔진설정] 메뉴에서 [서비스 엔진 목록]에 서비스 프레임워크를 등록한다. 아래 등록 예시를 참고한다.
서비스 엔진명 : Konan-Service-Framework
URL : http://l127.0.0.1:7614/ksf
그룹명 : search
[엔진관리] > [모듈관리] > [모듈관리] 메뉴로 이동한다. 엔진으로 서비스 프레임워크를 선택한 후, 관리할 사전모듈에 도메인을 추가한다.
이후 Admin에서 [사전관리]탭을 통해 사전을 관리할 수 있다. (실시간 인기 검색어, 한자독음 제외)
자동완성 기능은 사용자가 검색어를 입력할 때, 시스템에 등록된 사전을 이용하여 입력된 검색어를 포함하는 완성형 검색어를 제시하는 기능이다.
종류 | 파일명 |
---|---|
주 사용자 사전 | akc-user.{domain}.txt |
보조 사용자 사전 | akc-usr2.{domain}.txt |
금칙어 사전 | akc-stop.{domain}.txt |
사용자 사전이 주 사용자 사전과 보조 사용자 사전으로 분리되어 있기 때문에 활용 목적에 따라 별도 관리가 가능하다.
예를 들어, 주 사용자 사전은 Admin을 통해 수동 관리하고 보조 사용자 사전은 Konan Log Analytics를 통해 자동으로 관리할 수 있다.
keyword:[tag1]:[tag2]
구분 | 설명 |
---|---|
keyword | 완성형 검색어로 제시될 검색어 (필수) |
tag1 | 검색어 자동완성 서비스 시 부가적인 정보로 사용 (생략 가능) |
tag2 | 검색어 자동완성 서비스 시 부가적인 정보로 사용 (생략 가능) |
예를 들어, 자동완성 후보가 기관명을 가리킬 때 기관 홈페이지 주소를 tag1에 추가하여 해당 검색어와 함께 제시할 수 있다. 이후 제시된 해당 검색어를 선택하면 기관 홈페이지로 이동하도록 서비스를 구축할 수 있다.
keyword, tag1, tag2의 구분자로 콜론(:)을 사용하며 콜론(:) 문자를 포함하고 싶을 경우 '\:'와 같이 명시한다.
$ head akc-user.0.txt
테스트
삼성:www.samsung.co.kr:200
삼성전자:www.sec.co.kr:300
엘쥐:www.lg.co.kr:200
삼성동:\::100
PMP:아이스테이션:500
전자사전::600
MP3::500
DMB:핸드폰
PSP:소니:190,000
$ head akc-usr2.0.txt
아이팟:www.apple.co.kr:200
아이나비:나비:500
$ head akc-stop.0.txt
테레비
자동완성 서비스의 환경 설정은 akc-conf.{domain}.rc 파일에 저장된다.
인기검색어는 사전을 기반으로 검색어 순위 목록을 제공하는 기능이다.
종류 | 파일명 |
---|---|
주 사용자 사전 | ppk-user.{domain}.txt |
보조 사용자 사전 | ppk-usr2.{domain}.txt |
금칙어 사전 | ppk-stop.{domain}.txt |
사용자 사전이 주 사용자 사전과 보조 사용자 사전으로 분리되어 있기 때문에 활용 목적에 따라 별도 관리가 가능하다.
예를 들어, 주 사용자 사전은 Admin을 통해 수동 관리하고 보조 사용자 사전은 Konan Log Analytics를 통해 자동으로 관리할 수 있다.
keyword:변동순위
구분 | 설명 |
---|---|
keyword | 인기 검색어로 제시될 검색어 (필수) |
변동순위 | 검색어 변동 순위 (생략 가능) |
구분자로 콜론(:)을 사용하며 콜론(:) 문자를 포함하고 싶을 경우 '\:'와 같이 명시한다.
$ head ppk-user.0.txt
코난:new
Java:0
테크놀로지:152
전자:-11
스마트폰:14
$ head ppk-usr2.0.txt
대한민국
서울
검색엔진
$ head ppk-stop.0.txt
mp3
복합기
인기검색어 서비스의 환경 설정은 ppk-conf.{domain}.rc 파일에 저장된다.
프로퍼티명 | 설명 |
---|---|
max_no_of_user_data | 주 사용자 사전에서 반환할 인기검색어 최대 개수를 설정한다.
|
charset | 사전 데이터의 문자셋을 설정한다. (기본값 : utf-8) 참고설치된 JVM이 지원하는 문자셋들을 지원한다. EUC-KR로 설정한 경우, module-conf.도메인번호.rc 파일에도 euckr 설정이 있어야 하며, 사전 파일 인코딩을 ANSI로 변경해야 한다. |
use_stop_like_match | 1로 설정할 경우, 금칙어 사전(ppk-stop.{domain}.txt)에서 일부단어만 일치되어도 인기검색어 목록에서 해당 단어가 제외된다. (기본값 : 0) (1.2.12 버전 부터)
|
usr2_dictionary_first | true 설정 시, 보조 사용자 사전인 ppk-usr2.{domain}.txt을 우선 적용된다. (기본값 : false) (1.2.14 버전 부터) Admin에서는 자동목록의 키워드를 상위에 먼저 노출 시킬 수 있다. |
입력한 검색어와 연관된 다른 검색어를 추천하는 기능이다.
추천검색어 사전은 서로 연관성이 있는 검색어의 목록을 저장하며, 검색어 입력 전후의 검색 패턴을 분석하여 추출한다. Konan Log Analytics를 사용할 경우 검색 로그를 이용하여 주기적으로 갱신되는 추천검색어 목록을 사전 데이터로 사용할 수 있으며, 별도의 추천검색어 목록이 있을 경우 이를 사용할 수도 있다.
종류 | 파일명 |
---|---|
주 사용자 사전 | kre-user.{domain}.txt |
보조 사용자 사전 | kre-usr2.{domain}.txt |
금칙어 사전 | kre-stop.{domain}.txt |
사용자 사전이 주 사용자 사전과 보조 사용자 사전으로 분리되어 있기 때문에 활용 목적에 따라 별도 관리가 가능하다.
예를 들어, 주 사용자 사전은 Admin을 통해 수동 관리하고 보조 사용자 사전은 Konan Log Analytics를 통해 자동으로 관리할 수 있다.
추천검색어 사전의 각 엔트리는 다음과 같이 두 가지 형식을 가진다. (기본형, 표제어형)
기본형
검색어1,검색어2,검색어3,...,검색어n
검색어n으로 검색할 경우 검색어n을 제외한 나머지 검색어들을 지정된 개수 만큼 순서대로 추천한다.
검색어 간의 구분자는 콜론(:)을 사용하며 콜론(:) 문자를 포함하고 싶을 경우 '\:'와 같이 명시한다.
표제어형
표제어:검색어1,검색어2,...,검색어n
표제어로 검색할 경우 검색어1 부터 검색어n 까지 지정된 개수 만큼 순서대로 추천한다.
표제어와 검색어들 간의 구분자는 콜론(:)을 사용하며 콜론(:) 문자를 포함하고 싶을 경우 '\:'와 같이 명시한다.
이전 버전과 달리 하나의 사전 안에 기본형과 표제어형의 사전 엔트리를 혼합하여 사용할 수 있다.
$ head kre-user.0.txt
핸드폰, 이효리, 초코렛폰, 테레비
"동급생, 하급생", 동급생, 하급생, "동급셍, 하급셍", 동급셍, 하급셍
"록맨, 메가맨", 록맨 메가맨, 록멘 메가멘, 록멘 메가맨, 록맨 매가맨, 록맨 매가멘
"록맨, 메가맨 (31)", "Rock Man, Mega Man"
061JOB, 061job
1492마일스, 1492MILES, 일사구이마일스, 1492마일즈, 일사구이마일즈
16진수 , hexadecimal
24h 크림, 24시간 크림
$ head kre-usr2.0.txt
사이언:LG사이언, LG텔레콤
스카이, 스키니폰, 펜택
캔유, 흰둥이
$ head kre-stop.0.txt
테레비
위의 사전 파일을 이용하는 경우 검색어 "핸드폰"에 대한 추천검색어는 "이효리"와 "초코렛폰"이다. "테레비"기 제외되는 이유는 "테레비"가 금칙어 사전(kre-stop.0.txt)에 등록되어 있기 때문이다.
추천검색어 서비스의 환경 설정은 kre-conf.{domain}.rc파일에 저장된다.
프로퍼티명 | 설명 |
---|---|
use_keyword_case | 입력문이 영문일 경우 대소문자 구분 여부를 설정한다. (기본값 : 0)
|
whitespace_sensitive | 공백 문자 무시 여부를 설정한다. (기본값 : 0) |
charset | 사전 데이터의 문자셋을 설정한다. (기본값 : utf-8) 참고설치된 JVM이 지원하는 문자셋들을 지원한다. EUC-KR로 설정한 경우, module-conf.도메인번호.rc 파일에도 euckr 설정이 있어야 하며, 사전 파일 인코딩을 ANSI로 변경해야 한다. |
usr2_dictionary_first | true 설정 시, 보조 사용자 사전인 ppk-usr2.{domain}.txt을 우선 적용된다. (기본값 : false) (1.2.14 버전 부터) 관리기에서는 자동목록의 키워드를 상위에 먼저 노출 시킬 수 있다 |
사용자가 입력한 검색어는 다양한 요인에 의해 잘못된 형태로 입력될 수 있다. 맞춤법이 틀렸거나, 영문 입력 모드에서 한글을 입력하는 경우 등에 의해 잘못된 검색어로 원치 않은 검색을 수행하는 경우가 발생한다.
오타변환은 사용자가 잘못 입력한 검색어를 교정하여 정확한 검색 결과를 얻을 수 있도록 지원하는 서비스이다.
종류 | 파일명 | 비고 |
---|---|---|
시스템 사전 | spc-syst.dat | 기본으로 제공되는 오타변환 규칙 사전이다. 사용자에 의한 임의 수정은 불가능하다. |
사용자 사전 | spc-user.txt | 사용자가 편집할 수 있는 사전이다. 이 사전에 등록된 오타변환 규칙은 시스템 사전 보다 높은 우선순위를 가진다. |
금칙어 사전 | spc-stop.txt | 교정 후 출력될 목록에서 제외시키기 위한 사전이다. 일반적으로 자동화되어 있는 시스템에서는 사용자들에 의한 오용(abuse)이나 관리자의 실수로 인해 미풍양속에 반하는 금칙어들이 그대로 서비스에 노출되는 경우가 있다. 금칙어 사전(spc-stop.txt)에 이러한 단어들을 등록해 놓으면 서비스 노출을 막을 수 있다. |
빈도수 사전 | spc-freq.txt | Deprecated 색인된 문서집합에서 키워드의 문서 빈도수를 나타내는 빈도수 사전으로, 더 이상 사용하지 않는다. |
correct_word [ : incorrect_word ,incorrect_word, ...]
구분 | 설명 |
---|---|
correct_word | 입력한 오타에 대한 정답 |
incorrect_word | 정답으로 수정될 오타 항목 쉼표(,)로 나열 |
$ head spc-user.txt
daemon: deamon
simple: simpel
김치찌개: 김치치개, 김치찌게
$ head spc-stop.txt
섹스
야설
야동
오타변환 서비스의 환경 설정은 spc-conf.rc 파일에 저장된다.
프로퍼티명 | 설명 |
---|---|
spc_opt_term_validation_level | 영/한 키스트로크 변환 시 교정 방법을 설정한다. (기본값 : 1)
참고
|
spc_opt_min_term_length | 영/한, 한/영 키스트로크 변환 및 유사 단어를 제시 기능을 사용하기 위해 필요한 최소 키스트로크 수를 설정한다. (기본값 : 4) 참고
|
spt_opt_min_sim_score | 유사 단어 제시 기능 사용 시, 유사 단어 간의 최소 편집 거리를 설정한다. 0~1 사이의 값을 설정한다. (기본값 : 0.5) (1.2.8 버전 부터)
|
spc_opt_use_user_dic (Deprecated) | 사용자 사전의 사용 여부를 설정한다. 참고사용하지 않는 프로퍼티이다. 사용자 사전이 존재하는 경우 사용되고 존재하지 않는 경우 사용되지 않는다. |
spc_opt_use_system_dic (Deprecated) | 시스템 사전의 사용 여부를 설정한다. 참고사용하지 않는 프로퍼티이다. 사용자 사전이 존재하는 경우 사용되고 존재하지 않는 경우 사용되지 않는다. |
spc_opt_use_kscv_e2k | 입력이 영문으로만 구성된 경우 영/한 키스트로크 변환의 사용 여부를 설정한다. (기본값 : 1) 참고사용 시(1일 경우) 교정 방법은 spc_opt_term_validation_level 설정값을 따른다. |
spc_opt_use_kscv_k2e | 입력이 한글로만 구성된 경우 한/영 키스트로크 변환의 사용 여부를 설정한다. (기본값 : 1) 참고사용 시(1일 경우) 변환 결과가 사용자 사전이나 시스템 사전에 올바른 철자로 등록되어 있는 경우에만 교정한다. 오타는 한/영 변환 결과를 검사하지 않는다. (예)
|
spc_opt_use_typo_e2e | 입력이 영문으로만 구성된 경우 유사 단어 제시 기능의 사용 여부를 설정한다. (기본값 : 1) |
spc_opt_use_typo_k2k | 입력이 한글로만 구성된 경우 유사 단어 제시 기능의 사용 여부를 설정한다. (기본값 : 1) (1.2.7 버전 부터)
|
spc_opt_use_typo_sys | 유사 단어 제시 기능 사용 시, 시스템 사전 사용 유무를 설정한다. (기본값 : 1) (1.2.11 버전 부터)
|
spc_opt_use_stopword (Deprecated) | 금칙어 사전의 사용 여부를 설정한다. 참고사용하지 않는 프로퍼티이다. 금칙어 사전이 존재하는 경우 사용되고 존재하지 않는 경우 사용되지 않는다. |
charset | 사전 데이터의 문자셋을 설정한다. (기본값 : utf-8) 참고설치된 JVM이 지원하는 문자셋들을 지원한다. EUC-KR로 설정한 경우, module-conf.도메인번호.rc 파일에도 euckr 설정이 있어야 하며, 사전 파일 인코딩을 ANSI로 변경해야 한다. |
입력된 검색어에 금칙어가 포함되어 있는지 검사하고 포함되어 있을 경우 해당 금칙어들을 반환하는 서비스이다.
금칙어 사전은 서비스에 노출되어서는 안되는 미풍양속에 반하는 검색어들을 포함하고있다. 이러한 금칙어들의 경우 별도의 수집 및 관리가 필요하다.
종류 | 파일명 | 비고 |
---|---|---|
시스템 사전 | csw-syst.{domain}.dat | 일반적으로 금칙어로 통용되는 검색어들을 포함하고 있으며 수정이 불가능하다. |
사용자 사전 | csw-user.{domain}.txt | 추가적인 금칙어 목록 지정이 필요할 경우 사용자 사전에 등록한다. |
금칙어 제외 사전 | csw-stop.{domain}.txt | 금칙어로 취급하지 않을 검색어들을 등록한다. |
금칙어 서비스의 환경 설정은 csw-conf.{domain}.rc 파일에 저장된다.
프로퍼티명 | 설명 |
---|---|
use_exact_match | 금칙어 사전의 목록과 일치하는 결과값을 반환 할 것인지 설정한다. (기본값 : 1) 1로 설정할 경우 다른 옵션들은 무시된다. |
use_character_series_match | 입력문을 풀어쓰기 할 것인지 설정한다. (기본값 : 0) |
ignore_special_character | 입력문에 특수문자가 포함되어 있을 경우 무시할 것인지 설정한다. (기본값 : 0) |
charset | 사전 데이터의 문자셋을 설정한다. (기본값 : utf-8) 참고설치된 JVM이 지원하는 문자셋들을 지원한다. EUC-KR로 설정한 경우, module-conf.도메인번호.rc 파일에도 euckr 설정이 있어야 하며, 사전 파일 인코딩을 ANSI로 변경해야 한다. |
검색어가 금칙어로 취급되는 것을 막기 위해 한글 풀어쓰기 및 특수문자를 혼용하는 경우가 있는데, 이러한 시도를 막기위한 옵션을 제공한다. 사용자 사전에 "성인"을 등록한 후 use_chracter_series_match와 ignore_special_character를 1로 설정하면 "ㅅㅓㅇ인", "성/인", "성 인"등의 검색어도 금칙어로 추출할 수 있다.
"세계4대성인"과 같은 검색어의 경우 금칙어로 취급되지 않도록 하기 위해서는 금칙어 제외 사전(csw-stop.{domain}.txt)에 검색어 전문을 등록한다.
실시간 인기검색어는 실시간으로 요청되는 검색어들의 순위 목록을 제공하는 기능이다.
종류 | 파일명 |
---|---|
금칙어 사전 | rpk-stop.{domain}.txt |
실시간 인기검색어를 사용할 경우, rpk-stop.{domain}.txt 사전이 빈 파일일지라도 필수로 생성되어 있어야 한다.
실시간 인기검색어 서비스의 환경 설정은 rpk-conf.{domain}.rc 파일에 저장된다.
프로퍼티명 | 설명 |
---|---|
entry_size | 검색한 entry_size (테이블의 최대 row개수) (기본값 : 100000) |
memory_entry_size | 실시간 인기 검색어 개수 (sorting되어 메모리에 가져올 수 있는 최대 검색어 개수) (기본값 : 100) |
refresh_interval | 메모리에 있는 실시간 인기 검색어를 새로 refresh하는 interval (기본값 : 60 (seconds)) |
data_interval | 실제 API로 rtrankings호출 시 얼마큼 시간 이전부터 실시간 인기검색어의 포함시킬지의 interval (기본값 : 1 (hour)) |
charset | 사전 데이터의 문자셋을 설정한다. (기본값 : utf-8) 참고설치된 JVM이 지원하는 문자셋들을 지원한다. EUC-KR로 설정한 경우, module-conf.도메인번호.rc 파일에도 euckr 설정이 있어야 하며, 사전 파일 인코딩을 ANSI로 변경해야 한다. |
입력받은 텍스트 내에 있는 모든 한자들을 한글 독음으로 치환하는 서비스이다.
종류 | 파일명 | 비고 |
---|---|---|
시스템 사전 | hnj-syst.{domain}.dat | 기본 시스템 사전으로 수정이 불가능하다. |
사용자 사전 | hnj-user.{domain}.txt |
|
금칙어 제외 사전 | hnj-stop.{domain}.txt | 금칙어 사전에 등록 시 해당 한자들을 독음 변환을 하지 않는다. 사용자 사전과 금칙어 사전에 같은 한자가 등록되는 경우 금칙어 사전이 우선된다. |