【问题标题】:How can I use prefix query on Korean word in Elasticsearch?如何在 Elasticsearch 中对韩语单词使用前缀查询?
【发布时间】:2014-12-01 02:09:32
【问题描述】:

我在“英文”文档上使用 Elasticsearch 做得很好。 但是,我在使用“韩语”字词时遇到了前缀查询。

详细来说,一个文档包含诸如"한글" 之类的单词,我想使用前缀查询来获取文档,搜索词不仅包括"한",还包括"ㅎ"

使用默认设置我无法做到这一点。 我看到它与icu_normalizernfd decomposition 或其他东西有关。 但我无法完全理解使用“ㅎ”搜索词获得结果“한글”的方式。

有人可以帮助我吗?

提前致谢。

【问题讨论】:

    标签: search elasticsearch normalization icu


    【解决方案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'
    

    【讨论】:

    • 仅在索引时使用 autocomplete_tokenizer。查询时,可以使用不同的分词器和nfd过滤器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多