용바오의 연구실

JGI (Jaypyon General Intelligence)

ElasticSearch에서의 Lexical Search와 Nori Tokenizer의 구체적인 쓰임

예를 들어, "유통시장의"라는 텍스트가 들어오면 다음과 같이 토큰화됩니다:

유통시장의 유통 시장 의

이렇게 되면 "유통시장의"라는 전체 토큰이 인덱스에 저장되고, "유통시장"이라는 토큰은 생성되지 않습니다. 따라서 "유통시장"으로 검색했을 때 원하는 결과가 나오지 않는 것입니다.

이 문제를 해결하기 위해서는 Nori 분석기의 decompound_mode를 "discard"로 변경하는 것이 좋습니다. 이렇게 하면 복합 명사가 분해되고, 분해된 토큰만 저장됩니다.

"tokenizer": {
    "nori": {
        "type": "nori_tokenizer",
        "decompound_mode": "discard",
        "discard_punctuation": "true"
    }
}

위와 같이 설정을 변경하면 "유통시장의"라는 텍스트는 다음과 같이 토큰화됩니다:

유통 시장 의

이제 "유통시장"으로 검색하면 "유통"과 "시장" 토큰이 모두 일치하는 문서가 검색 결과에 포함될 것입니다.