[Elasticsearch] Jaso 분석기 이용하여 한글 최적화 검색

김민재·2025년 3월 24일
0

Elasticsearch

목록 보기
13/13

📋 Jaso 분석기

  • 한국어의 자소 분석을 위한 특화된 분석기이다. 자소는 한글 음절을 구성하는 자음과 모음을 의미한다. 자음과 모음으로 분리하는 역할을 한다.

💼 Jaso 분석기 특징

  1. 자소 분리: 한글 텍스트를 자음과 모음으로 분리하여 인덱싱한다.
    ex) "서울" => "ㅅ" / "ㅓ" / "ㅇ" / "ㅜ" / "ㄹ"
  2. 비슷한 철자의 검색: 자소 분석을 사용하면 철자가 비슷한 단어나 음절을 검색할 때 더 좋은 검색 결과를 제공한다.

🍬 Jaso 분석기 설치

인터넷 환경에서 다운로드하는 법

  • 도커 컨테이너 접속
docker exec -it elasticsearch bash

bin/elasticsearch-plugin install https://github.com/netcrazy/elasticsearch-jaso-analyzer/releases/download/v8.6.2/jaso-analyzer-plugin-8.6.2-plugin.zip

  • 설치 후 elsaticsearch 재시작

docker-compose restart elasticsearch

폐쇄망에서 다운로드하는 법

  • 파일을 미리 다운로드
wget https://github.com/netcrazy/elasticsearch-jaso-analyzer/releases/download/v8.6.2/jaso-analyzer-plugin-8.6.2-plugin.zip -P /tmp
  • 도커에 복사

docker cp /tmp/jaso-analyzer-plugin-8.6.2-plugin.zip <컨테이너_ID>:/tmp/
  • 도커 컨테이너 접속

  • 도커 컨테이너에서 다운로드

bin/elasticsearch-plugin install file:///tmp/jaso-analyzer-plugin-8.6.2-plugin.zip

⛑️ 코드(index 설정)

PUT /index
{
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "suggest_filter": {
            "type": "edge_ngram",
            "min_gram": 1,
            "max_gram": 50
          }
        },
        "tokenizer": {
          "jaso_search_tokenizer": {
            "type": "jaso_tokenizer",
            "mistype": true,
            "chosung": false
          },
          "jaso_index_tokenizer": {
            "type": "jaso_tokenizer",
            "mistype": true,
            "chosung": true
          }
        },
        "analyzer": {
          "suggest_search_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_search_tokenizer"
          },
          "suggest_index_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_index_tokenizer",
            "filter": [
              "suggest_filter"
            ]
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "suggest_index_analyzer",
        "search_analyzer": "suggest_search_analyzer"
      }
    }
  }
}
profile
개발 경험치 쌓는 곳

2개의 댓글

comment-user-thumbnail
2025년 3월 24일

안녕하세요 자소분리 찾아보다가 궁금한 점 생겨서 여쭤봅니다!! 혹시 es 8.6.2로 맞춰서 쓰시는건가요 아니면 버전에 맞춰서 튜닝해서 쓰시는건가요?

1개의 답글