티스토리 뷰

ElasticSearch 버젼이 5.x 이상이면 open korean text 를 추천하고 이하이면 은전한닢 또는 arirang 추천.

ElasticSearch 5.x 대의 arirang 은 ElasticSearch 재시작 1회 후 형태소 분석이 1자만 되는 이슈 발생함.
"홍길동" 검색시 "홍"이라는 단어만 분석되어
"홍길동" 검색시 "홍"이 들어간 모든 문서 검색되어버림.
즉, "얏홍"과 같은 구문까지 검색되는 문제 발생함.

Index 설정은:

PUT /my_index/_settings
{
  "analysis": {
    "filter": {
      "my_stop": {
        "type": "stop",
        "stopwords": [
          "and",
          "is",
          "the"
        ]
      }
    },
    "analyzer": {
      "my_ngram_analyzer": {
        "tokenizer": "my_ngram_tokenizer"
      },
      "openkorean_analyzer": {
        "type": "custom",
        "tokenizer": "openkoreantext-tokenizer",
        "filter": [
          "openkoreantext-redundant-filter", "openkoreantext-phrase-extractor"
        ]
      },
      "arirang": {
        "tokenizer": "arirang_tokenizer",
        "filter": [
          "trim",
          "lowercase",
          "arirang_filter",
          "my_stop"
        ]
      }
    },
    "tokenizer": {
      "my_ngram_tokenizer": {
        "type": "ngram",
        "min_gram": 2,
        "max_gram": 10,
        "token_chars": [
          "letter",
          "digit"
        ]
      }
    }
  }
}

Type(=RDB Table) 의 mapping (=RDB Schema) 의 analyzer 설정:

PUT /my_index
{
  "mappings": {
    "info": {
      "properties": {
        "txt": {
          "type": "text",
          "analyzer": "openkorean_analyzer"
        },
        "date": {
          "type": "date"
        },
        "name": {
          "type": "text"
        },
        "user_id": {
          "type": "long"
        }
      }
    }
  }
}


댓글