본문 바로가기

ElasticSearch

[elastic search] 한글 형태소 분석기(analyzer)설정 및 확인

안녕하세요 오늘은 elastic search에서 한글 형태소 분석기 설정 방법과 설정 확인 방법에 대해서 써보도록 하겠습니다.

 

한글은 다른 언어보다 복합어, 합성어등이 많아서 형태가 매우 복잡한 언어중에 하나입니다. 그래서 elastic search에 한글 문서를 활용할 경우 한국어 형태소 분석기 및 형태소 사전은 필수입니다. 한글 형태소 분석기에는 아리랑이나 seunjeon, Open Korean Text 등이 있지만 오늘은 elastic search에서 공식적으로 지원하는 Nori(노리)에 대해서 알아보고 Nori 설정과 확인 방법을 알아보도록 하겠습니다.

 

 

1. Nori란?

Nori는 Elasticsearch에서 6.6 버전부터 공식적으로 개발, 지원하기 시작한 한글 형태소 분석기입니다. 기존의 Seunjeon 형태소 분석기에서 사용하는 mecab-ko-dic을 기반으로 재가공하여 만들어 졌으며 루씬으로 개발되었습니다.

 

 

2. Nori 설치

Nori 형태소 문석기를 사용하려면 먼저 플러그인을 설치해야 합니다. elasticsearch의 home 디렉토리에서 아래 명령어를 실행하면 쉽게 설치 할 수 있습니다. 

$ bin/elasticsearch-plugin install analysis-nori

 

 

3. nori 설치 확인

index에 본격적으로 적용하기전에 잘 작동하는지 확인해 보고 기본 tokenizer와 어떻게 다른지 확인해 보도록 하겠습니다.

 

standard tokenizer 결과

위에처럼 아무런 기본 standard tokenizer는 단순히 띄어쓰기로 텍스트를 tokenize 합니다. 그래서 위의 텍스트의 경우 "엘사스틱"이라고만 하면 검색되지 않습니다.

 

nori tokenizer 적용 결과

반면에 한글 형태소 분석기인 Nori tokenizer를 적용하면 위에처럼 복합어들을 모두 tokenize 하기 때문에 "엘라스틱"은 물론이고 "너무"등의 단어로도 검색 score를 받을 수 있게 됩니다.

 

 

4. Nori index 적용 및 확인

이제 Analyzer의 기능에 대해서 확인했으니 본격적으로 index에 설정 해 보도록 하겠습니다. Analyzer는 인덱스를 생성하는 시점에서 설정을 해줘야 하기 때문에 기존에 이미 데이터가 있는 index가 있다면 새로 생성후 데이터 삽입 절차를 다시 거쳐야 합니다. 아래 코드를 입력 하여 nori tokenizer가 적용된 index를 생성합니다.

 

Nori tokenizer가 적용된 index 생성 결과

 

 

analyzer 설정에 성공하면 위처럼 index가 생성됩니다. 이제 이 인덱스에 document를 삽입해 보고 tokenizer가 잘 작동하는지 확인해 보도록 하겠습니다.

 

index에 데이터 삽입 및 조회

 

 

document가 잘 삽입 되었고, 검색도 되고 있습니다. 그럼 이 index에 tokenizer가 잘 적용 되었는지 보겠습니다. tokenizer 결과는 _termvectors/{id}?field={필드명}으로 확인할 수 있습니다.

 

document tokenizer 적용 확인

 

이상으로 Elasticsearch에 한글 형태소 분석기 적용 및 확인 방법에 대해서 알아보았습니다. 사실 analyzer 설정에는 매우 복잡하고 다양한 옵션과 방법이 존재합니다. 이를 얼마나 잘 설정하느냐에 따라 검색엔진의 품질이 결정 될것입니다. elasticsearch 공식 사이트에 guide가 잘 정리되어 있으니 꼭 한번 정독해 보시는 것을 추천드립니다.

 

참고자료 : elastic 공식 사이트

https://www.elastic.co/guide/en/elasticsearch/plugins/8.7/analysis-nori.html

 

Korean (nori) analysis plugin | Elasticsearch Plugins and Integrations [8.7] | Elastic

Korean (nori) analysis pluginedit The Korean (nori) Analysis plugin integrates Lucene nori analysis module into elasticsearch. It uses the mecab-ko-dic dictionary to perform morphological analysis of Korean texts. Installationedit This plugin can be instal

www.elastic.co

 

'ElasticSearch' 카테고리의 다른 글

elsatic search QueryDSL 정리  (0) 2023.05.19