(사실 SOLR에 MeCab Ko를 먼저 붙였지만, 최근에 Elasticsearch만 정리하고 있다. ㅡㅡ;)
참고) SOLR와 Elasticsearch에서 MeCab을 사용할 때 특수문자 허용 검색하기
http://nocode2k.blogspot.kr/2015/08/mecab-ko-solr-elasticsearch.html
CentOS 6.x 환경에서 SOLR와 Elasticsearch에서 한국어 형태소분석기인 Mecab Ko를 사용하기 위해서는 먼저 아래와 같이 설치 및 환경설정이 필요하다.
(* 8월 20일 현재 은전한닢 프로젝트에서는 mecab ko 사전을 사용하는 스칼라로 개발된 형태소분석기도 배포중이다.)
1. GCC컴파일러/JDK설치
1.1 C++ 컴파일러 설치
yum install gcc-c++
1.2 Java 다운로드 및 설치
사이트 다운로드 : http://www.oracle.com/technetwork/java/javase/downloads/index.html
리눅스 command 다운로드
32 bit linux use this:
curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-i586.rpm > jdk-8u51-linux-i586.rpm
For 64 bit:
curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.rpm > jdk-8u51-linux-x64.rpm
Install the rpm:
rpm -ivh jdk-8u51-linux-i586.rpm
2. mecab-ko 설치
mecab-ko는 한국어 특성에 맞는 기능이 추가된 MeCab의 fork 프로젝트이다.
mecab-ko 다운로드 페이지에서 mecab-ko의 소스를 다운로드 받고 설치한다.
사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko/downloads
리눅스 command 다운로드 및 설치
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
tar -zxvf mecab-0.996-ko-0.9.2.tar.gz
cd mecab-0.996-ko-0.9.2
./configure --with-charset=utf-8
make
make check
make install
# /usr/local/bin 아래에 실행바이너리 파일이, /usr/local/lib 아래에 라이브러리가, 그리고 /usr/local/etc 아래에 설정 파일인 mecabrc가 설치된다.
3. mecab-ko-dic 설치
mecab-ko-dic 다운로드 페이지에서 mecab-ko-dic의 최신버전을 다운로드 받는다.
사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko-dic/downloads
리눅스 command 다운로드 및 설치
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.1-20150707.tar.gz
tar zxvf mecab-ko-dic-2.0.1-20150707.tar.gz
cd mecab-ko-dic-2.0.1-20150707
./configure --with-charset=utf-8
make
make install
# /usr/local/lib/mecab/dic/mecab-ko-dic 아래에 사전이 설치된다.
4. mecab 테스트
$ /usr/local/bin/mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic
mecab-ko-dic은 MeCab을 사용하여, 한국어 형태소 분석을 하기 위한 프로젝트입니다.
mecab SL,*,*,*,*,*,*,*
- SY,*,*,*,*,*,*,*
ko SL,*,*,*,*,*,*,*
- SY,*,*,*,*,*,*,*
dic SL,*,*,*,*,*,*,*
은 JX,*,T,은,*,*,*,*
MeCab SL,*,*,*,*,*,*,*
을 JKO,*,T,을,*,*,*,*
사용 NNG,*,T,사용,*,*,*,*
하 XSV,*,F,하,*,*,*,*
여 EC,*,F,여,*,*,*,*
, SC,*,*,*,*,*,*,*
한국어 NNG,*,F,한국어,Compound,*,*,한국/NNG/*+어/NNG/*
형태소 NNG,*,F,형태소,Compound,*,*,형태/NNG/*+소/NNG/*
분석 NNG,*,T,분석,*,*,*,*
을 JKO,*,T,을,*,*,*,*
하 VV,*,F,하,*,*,*,*
기 ETN,*,F,기,*,*,*,*
위한 VV+ETM,*,T,위한,Inflect,VV,ETM,위하/VV/*+ᆫ/ETM/*
프로젝트 NNG,*,F,프로젝트,*,*,*,*
입니다 VCP+EF,*,F,입니다,Inflect,VCP,EF,이/VCP/*+ᄇ니다/EF/*
. SF,*,*,*,*,*,*,*
EOS
5. mecab-java 설치
사이트 다운로드: https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer
리눅스 command 다운로드 및 설치
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
# Makefile 수정
vi Makefile
# Makefile 에서 INCLUDE 변수에 java include directory를 설정해준다.
INCLUDE=/usr/java/jdk1.8.0_51/include
# Makefile에서 GCC optimization 옵션을 O3에서 O1으로 변경한다.
# 은전한닢에서는 OpenJDK사용시 변경하라고 되어 있으나 Oracle JDK에서도 변경해줘야 한다.
all:
$(CXX) -O1 -c -fpic $(TARGET)_wrap.cxx $(INC)
$(CXX) -shared $(TARGET)_wrap.o -o lib$(TARGET).so $(LIBS)
$(JAVAC) $(PACKAGE)/*.java
$(JAVAC) test.java
$(JAR) cfv $(TARGET).jar $(PACKAGE)/*.class
# 저장
:wq
make
cp libMeCab.so /usr/local/lib
6. 환경 설정
CentOS에서 Elasticsearch를 실행하는 계정의 환경설정파일(예: .bashrc)에 라이브러리 경로를 추가한다.
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
export LD_LIBRARY_PATH
7. Elasticsearch MeCab 플러그인 설치
./bin/plugin --install analysis-mecab-ko-0.17.0 --url https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/elasticsearch-analysis-mecab-ko-0.17.0.zip
8. Elasticsearch 재시작 및 analyzer 테스트
8.1 Elasticsearch 실행
bin/elasticsearch -Djava.library.path=/usr/local/lib
8.2 index 생성
curl -XPUT ‘localhost:9200/INDEX_NAME’
예)
curl -XPUT ‘localhost:9200/eunjeon’
8.3 index close
curl -XPOST 'localhost:9200/eunjeon/_close’
8.3 analyzer 추가
curl -XPUT 'localhost:9200/eunjeon/_settings’ -d ’{
"index": {
“analysis”: {
"analyzer": {
"korean": {
"type": “custom”,
"tokenizer": “mecab_ko_standard_tokenizer”
}
}
}
}
}’
테스트)
curl -XGET 'localhost:9200/eunjeon/_analyze?analyzer=korean\&pretty=true -d '은전한닢 프로젝트'
8.4 index open
curl -XPOST 'localhost:9200/eunjeon/_open’
8.5 type에 대한 _mapping 설정 추가
한글 형태소 분석기 적용된 mapping 추가의 예)
curl -XPUT 'localhost:9200/eunjeon/_mapping/survey’ -d ’{
"properties":{
"title":{
"type":"string",
"analyzer":"korean"
}
}
}’
설정값 확인)
curl -XGET 'localhost:9200/eunjeon/_settings?pretty=1’
[참고 사이트]
은전한닢 프로젝트: http://eunjeon.blogspot.kr
은전한닢 프로젝트 구글 포럼: https://groups.google.com/forum/#!forum/eunjeon
작성자가 댓글을 삭제했습니다.
답글삭제안녕하세요 엘라스틱 서치 공부중인 초보 개발자입니다
답글삭제글 따라서 잘 설치하던 도중에 7번째 'Elasticsearch MeCab 플러그인 설치'에서 에러가 발생해서 질문 드립니다.
"ERROR : failed to download out of all possible locations..., use --verbose to get detailed information" 이라는 에러가 발생하는데요
검색을 해봐도 제 능력으로는 이해할 수 없는 답변들만 나와서 진행이 안되고 있습니다.
답변 주시면 감사하겠습니다.
해당위치의 파일을 다운로드 못하는거 같은데 테스트 하시는 서버의 DNS 설정 확인해 보세요. DNS 문제가 아니라면 https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads 여기에서 직접 파일 받아서 설치 해 볼수도 있어요.
삭제답변 감사합니다.
삭제은전한닢이 엘라스틱서치 최신버전과는 연동이 안되는것같습니다.
엘라스틱서치 버전을 낮춰서 문제 해결했습니다.