Elasticsearch nori 플러그인 설치 및 사용자사전 테스트

Created:

엘라스틱서치 노리플러그인을 설치후 테스트 해보고자 한다.

노리플러그인 설치

엘라스틱서치 설치 경로에 존재하는 elasticsearch-plugin 파일을 찾아 아래와 같은 명령어로 노리플러그인을 설치한다.

elasticsearch-plugin install analysis-nori

설치가 잘 되었는지 확인해보자

elasticsearch-plugin list

플러그인 목록에 analysis-nori가 있다면 설치가 완료된 것이다.
설치 완료후 엘라스틱서치를 재시작한다.

노리플러그인 사용자사전 적용전 테스트

사용자 사전을 적용하지 않은 기본 노리 분석을 먼저 확인 해보았다.

GET _analyze
{
  "text": "ryeon9445",
  "analyzer": "nori"
}

결과는 아래처럼 ryeon9445가 분해된 분석결과가 나왔다.

{
  "tokens" : [
    {
      "token" : "ryeon",
      "start_offset" : 0,
      "end_offset" : 5,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "9445",
      "start_offset" : 5,
      "end_offset" : 9,
      "type" : "word",
      "position" : 1
    }
  ]
}

노리플러그인 사용자사전 적용후 테스트

이번엔 ryeon9445을 하나의 고유명사로 인식하도록 사용자 사전을 적용하여 보고자 한다.
아래와 같이 사용자 사전을 적용한 인덱스를 생성한다.

PUT test_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1,
    "analysis": {
      "tokenizer": {
        "test_tokenizer": {
          "type": "nori_tokenizer",
          "user_dictionary_rules":["ryeon9445"]
        }
      },
      "analyzer": {
        "test_analyzer": {
          "type": "custom",
          "tokenizer": "test_tokenizer"
        }
      }
    }
  }
}

user_dictionary_rules: 테스트하기 위하여 인라인 형태로 작성했다. 파일 형태로 작성하려면 user_dictionary를 사용하면 된다.


사용자 사전을 적용한 인덱스로 다시 분석을 해보자

GET test_index/_analyze
{
  "text": "ryeon9445",
  "analyzer": "test_analyzer"
}

결과는 아래 처럼 ryeon9445단어가 하나의 고유명사로 인식되었다.

{
  "tokens" : [
    {
      "token" : "ryeon9445",
      "start_offset" : 0,
      "end_offset" : 9,
      "type" : "word",
      "position" : 0
    }
  ]
}

참고

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

Comments