개요
해당내용은 회사후배가 열심히 찾아보고 정리한 내용을 나중에도 찾아보기 쉽게 리마인드 차원에서 포스팅한다.
설치방법
mecab-ko 라이브러리 설치
- https://bitbucket.org/eunjeon/mecab-ko/downloads에서 최신 버전 다운로드
-
현재 기준 5.1.1과 mecab-0.996-ko-0.9.2.tar.gz 호환 문제 없음
mecab-ko-dic 사전 설치
- https://bitbucket.org/eunjeon/mecab-ko-dic/downloads 에서 최신버전 다운로드
-
현재 기준 5.1.1과 mecab-ko-dic-2.0.1-20150920.tar.gz 호환 문제 없음
analysis-mecab-ko plugin 설치
$ ./bin/elasticsearch-plugin install https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/elasticsearch-analysis-mecab-ko-5.1.1.0.zip
mecab-java 다시 컴파일
make 전에 링크 참고하여 컴파일 옵션 바꾸기
$ wget https://bitbucket.org/eunjeon/mecab-java/downloads/mecab-java-0.996.tar.gz
$ tar zxvf mecab-java-0.996.tar.gz
$ cd mecab-java-0.996
$ vi Makefile
Makefile에서 바꿀 부분은 2가지 이다.
(CXX) -O3 -c -fpic $(TARGET)_wrap.cxx $(INC) 라인을 $(CXX) -O1 -c -fpic $(TARGET)_wrap.cxx $(INC) 으로 바꾼다.
INCLUDE 부분을 INCLUDE=/usr/lib/jvm/java-8-oracle/include 이런식으로 본인에 맞게 변경한다.
$ make
$ cp MeCab.jar /home/lks21c/elasticsearch-5.1.1/plugins/elasticsearch-analysis-mecab-ko/elasticsearch-analysis-mecab-ko-5.1.1.0.jar #경로는 맞게 변경
$ sudo cp libMeCab.so /usr/local/lib
환경변수 설정
검증
ES를 띄우고 아래의 쉘 스크립트로 한글 형태소 분석이 정상 동작하는지 확인해본다.
#!/usr/bin/env bash
ES='http://localhost:9200'
ESIDX='seunjeon-idx'
echo "put setting"
curl -XPUT "${ES}/${ESIDX}/?pretty" -d '{
"settings" : {
"index":{
"analysis":{
"analyzer":{
"korean":{
"type":"custom",
"tokenizer":"seunjeon_default_tokenizer"
}
},
"tokenizer": {
"seunjeon_default_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"mecab_args": "/usr/local/lib/mecab/dic/mecab-ko-dic"
}
}
}
}
}
}'
sleep 1
echo "========================================================================"
curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '삼성전자'
echo "========================================================================"
curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '빨라짐'
echo "========================================================================"
curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '낄끼빠빠 어그로'
echo "========================================================================"
curl -XGET "${ES}/${ESIDX}/_analyze?analyzer=korean&pretty" -d '미노야 오늘 밤에 밥 한번 만들어줘라 바비동생이 너무 빠르게 밥먹다 체했다 미노가 빠르던 느리던 꼭꼭 씹어서 먹는법 좀 알려줘라'
echo "delete index"
curl -XDELETE "${ES}/${ESIDX}?pretty"