옛날 버전의 게시글입니다.
최신 버전의 elasticsearch 에서는 nori 라는 한국어 형태소 분석기를 자체적으로 내장하고 있어 아래와 같이 복잡하게 설치하지 않아도 됩니다.
docker 기반으로 설치하는 게시글은 제가 추가로 정리했습니다.
아래 게시글에서 확인 가능합니다.
https://sooyeol86.blogspot.com/2019/12/elasticsearch-with-nori-feat-docker.html
docker를 사용하고 싶지 않은 분은 최신버전의 elasticsearch 를 받아서 직접 설치하시고
nori 플러그인만 인스톨 하면 간단하게 설치가 끝납니다. (엄청 쉽습니다!)
bin/elasticsearch-plugin install analysis-nori
요고 한줄이면 설치가 됩니다.
아래 공식사이트 참고)
https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-nori.html
추가로 nori + 사용자사전 + 유의어사전 + 품사에 대한 간략한 설명한 게시글도 작성했습니다.
품사에 대해서 참고하시면 검색엔진 구축 시 조금이나마 도움이 될 수 있을 것 같습니다.
https://sooyeol86.blogspot.com/2019/12/elasticsearch-nori.html
==============================================================================
ElasticSearch를 처음 접한 건 2013년 경에 회사 프로젝트를 진행하며 형태소분석기를 사용해야 할 일이 있어서 접하게 되었다.
당시는 Elasticsearch를 검색엔진으로 사용하지 않고, 은전한닢 만 형태소 분석하는 목적으로 사용을 해봤다.
그리고 해당 경험을 바탕으로 2016년에 Elastichsearch를 사용하여 검색엔진을 구축했다.
하지만 당시에는 윈도우에서 최신버전의 은전한닢을 사용할 수 없어 상당히 낮은 버전의 Elastichsearch (0.9버전) 으로 구축을 했다.
또, 시간이 흘러 2017년에 Elasitchsearch를 사용하여 새로 검색엔진을 구축할 일이 있었고,
검색을 해보니 친절하신 분께서 윈도우에서도 손쉽게 은전한닢을 쓸 수 있도록 빌드를 해주셨다.
나는 추 후 참고를 위해 해당 내용을 간략하게 정리를 해볼 생각으로 글을 작성해 둔다.
# 준비물
Elastichsearch (검색엔진) : x64 v5.5.0
은전한닢 플러그인 (형태소분석기) : v5.5.0
Mecab-ko / mecab-ko-dic / mecab-java
JDK : x64 1.8 144
# 설치 및 테스트
01. JDK 설치
A. JDK 1.8 x64 144 버전으로 구축 진행.
02. JAVA_HOME 설정
A. 시스템 > 고급시스템 설정 > 환경변수 에 JAVA_HOME 생성
03. 환경변수에 PATH 설정
A. Java 경로 설정
04. Mecab 다운로드
B. mecab-ko-msvc 다운로드
C. mecab-ko-dic-msvc 다운로드
릴리즈 다운로드 : https://github.com/Pusnow/mecab-ko-dic-msvc/releases/tag/mecab-ko-dic-2.0.3-20170922-msvc
D. mecab-java-msvc 다운로드
05. mecab 설치 및 테스트
A. 다운로드 받은 파일을 c:\mecab 폴더에 압축 해제
* 해당 폴더에 압축 해제 하지 않을 경우 Elastchsearch 와 제대로 연동이 안될 수 있음. (github 참고)
B. Mecab 폴더 path 설정
i. 환경변수에서 path 설정
C. CMD 창을 열어서 test.java 파일 빌드 (반드시 encoding UTF-8로 해야함)
Javac –encoding UTF-8 test.java
D. 빌드한 파일 실행
Java test
06. Elasticsearch 다운로드
A. Elasticsearch 5.5.0 버전 사용
07. Elasticsearch 설치
A. C:\Elastichsearch 폴더에 받은 파일 압축 해제
B. C:\Elastichsearch\config\ elasticsearch.yml 에 설정
i. 쿼리 조건 길이를 확장하고 싶은 경우 아래 코드 추가
ii. indices.query.bool.max_clause_count : 10240
08. 은전한닢 플러그인 설치
A. CMD 창 열어서 아래 명령어 실행
"C:\elasticsearch\bin\elasticsearch-plugin.bat" 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
정상적으로 설치 되면 아래와 같이 폴더가 생김.
09. Elastichsearch 서비스 등록
A. elasticsearch-service install
10. Elastichsearch 서비스 환경설정
A. 시작 옵션 설정
B. 자바 가상 메모리 조절 (필요한 경우)
11. Elastichsearch 서비스 시작
초기 서비스 등록 후 자동시작이 되어 있지 않기 때문에, 수동으로 시작을 해줘야 함.
위의 옵션으로 자동 시작하게 하면 재부팅 후 부터는 자동으로 시작하게 됨.
12. Elastichsearch 실행 및 은전한닢 형태소 분석기 정상 동작 확인
A. Elasticsearch 동작 확인
B. Index 생성
PUT 으로 http://localhost:9200/test/ 호출
##호출하는 JSON 본문##
{
"settings":
{
"index": {
"max_result_window" : 500000,
"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"
}
}
}
}
}
}
C. 형태소 분석 요청
POST 로 http://localhost:9200/test/_analyze?analyzer=korean_query 페이지 호출
##결과 JSON##
{
"tokens": [
{
"token": "은전",
"start_offset": 0,
"end_offset": 2,
"type": "NNG",
"position": 0
},
{
"token": "한",
"start_offset": 2,
"end_offset": 3,
"type": "NR",
"position": 1
},
{
"token": "닢",
"start_offset": 3,
"end_offset": 4,
"type": "NNG",
"position": 2
},
{
"token": "프로젝트",
"start_offset": 4,
"end_offset": 8,
"type": "NNG",
"position": 3
}
],
}