Как я могу использовать префиксный запрос для корейского слова в Elasticsearch?

Я успешно использую Elasticsearch для «английских» документов. Однако я застрял в префиксном запросе при использовании слов «корейский».

В деталях документ содержит такое слово, как "한글", и я хочу получить документ, используя префиксный запрос с условием поиска не только "한", но и "ㅎ".

Я не мог сделать это с настройками по умолчанию. Я видел, что это связано с icu_normalizer или nfd decomposition или с чем-то еще. Но я не мог полностью понять, как мне нужно сделать, чтобы получить результат «한글», используя поисковый запрос «ㅎ».

Кто-нибудь может мне помочь?

Заранее спасибо.


person Hosang Jeon    schedule 01.12.2014    source источник


Ответы (1)


Возможно, этот код поможет вам.

curl -XPUT '127.0.0.1:9200/test' -d '{
  "settings" : {
    "analysis": {
      "tokenizer" : {
        "autocomplete_tokenizer" : {
          "type" : "edgeNGram",
          "min_gram" : "1",
          "max_gram" : "30",
          "token_chars": ["letter", "digit"]
        }
      },
      "char_filter" : {
        "nfd_normalizer" : {
          "type" : "icu_normalizer",
          "name": "nfc",
          "mode": "decompose"
        }
      },
      "analyzer": {
        "autocomplete_analyzer": {
          "type": "custom",
          "char_filter": ["nfd_normalizer"],
          "tokenizer": "autocomplete_tokenizer"
        }
      }
    }
  }
}'

curl '127.0.0.1:9200/test/_analyze?pretty=1&analyzer=autocomplete_analyzer' -d '아버지가 방에 들어가신다. 태권-V'
person JeongHoon Baek    schedule 05.02.2015
comment
Используйте autocomplete_tokenizer только при индексации. При запросе вы можете использовать другой токенизатор и фильтр nfd. - person JeongHoon Baek; 10.02.2015