개발 환경 : .NETFramework version = v3.5
운영 체제 : 윈도우7
1. mecab-ko-dic 설치
참조 : https://groups.google.com/forum/#!topic/eunjeon/Dzohqj4n3QI
2. mecab-java-msvc설치
2-1. 환경 변수 설정
path 에 C:\mecab; 추가
3. 빌드
>> javac C:\mecab\org\chasen\mecab\*.java
>> 테스트 : mecab.exe -o output.txt input.txt
4. Elasticsearch plugin 설치
>> elasticsearch-plugin install https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/issues/attachments/9/eunjeon/mecab-ko-lucene-analyzer/1500357175.91/9/elasticsearch-analysis-mecab-ko-5.5.0.0.zip
4-1 오류1
위와 같은 오류 발생 시 https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/issues/attachments/9/eunjeon/mecab-ko-lucene-analyzer/1500357175.91/9/elasticsearch-analysis-mecab-ko-5.5.0.0.zip
zip 파일을 다운 받아 압축 해제 후 plugin-descriptor.properties 파일을 수정한다.
1) version = 5.6.0.0 으로 수정
2) elasticsearch.version = 5.6.0 으로 수정
3) 수정 후 다시 압축 하여 파일을 install 하준다
4-2 오류 2
4-1 수정 후 재시도 하였으나 아래와 같은 오류가 발생.
설치가 완료된 1대의 pc 에서 mecab 파일을 복사 후 재 설치 한 부분으로
mecab.exe -o output.txt input.txt 명령어를 다시한번 처리 후
4번 시도 시 정상적으로 처리 되었다. (정확한 부분인지는 모르겠음)
4-3. 성공
5. Elasticsearch 인덱스 적용
키바나에서 아래와 같이 인덱스를 등록한다.
PUT /eunjeon
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"korean_index": {
"type": "custom",
"tokenizer": "mecab_ko_standard_tokenizer"
},
"korean_query": {
"type": "custom",
"tokenizer": "korean_query_tokenizer"
}
},
"tokenizer": {
"mecab_ko_standard_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"mecab_args": "-d C:/mecab/mecab-ko-dic"
},
"korean_query_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"compound_noun_min_length": 100,
"mecab_args": "-d C:/mecab/mecab-ko-dic"
}
}
}
}
}
}
5-1 오류 1
아래와 같이 오류 발생 시 elasticsearch 를 재시작 한다.
5-2 성공 메시지가 나오면 아래와 같이 검색 한다
GET /eunjeon/_analyze/?analyzer=korean_query
{
"text" : "유관순선생님"
}
6. 원하는 index 의 document 에 형태소 분석기를 적용하고 싶을때.
PUT /log/
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"korean_index": {
"type": "custom",
"tokenizer": "mecab_ko_standard_tokenizer"
},
"korean_query": {
"type": "custom",
"tokenizer": "korean_query_tokenizer"
}
},
"tokenizer": {
"mecab_ko_standard_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"mecab_args": "-d C:/mecab/mecab-ko-dic"
},
"korean_query_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"compound_noun_min_length": 100,
"mecab_args": "-d C:/mecab/mecab-ko-dic"
}
}
}
}
}, "mappings" : {
"logs" : { ----type
"properties" : {
"title": {"type": "text", "analyzer": "korean_query"}, ...... -----document
}
}
}
}