使用elasticsearch中的匹配短语/术语的奇怪差异

时间:2015-11-10 19:01:09

标签: elasticsearch nest

最近,我遇到了一个使用elasticsearch的非常奇怪和令人沮丧的问题。我使用NEST API索引了大约100万个文档。索引包含一个全文字段,如下所示:

{"title": {"include_in_all": false, "analyzer": "ik_max_word", "type": "string"}}

该领域的数据主要是中文,ik_max_word是一个中国分析仪,具有最好的颗粒。问题是:

1)通常我在该字段上使用匹配短语查询,当我查询类似" ABC" (我在这里替换中文字符),我只得到260个结果。搜索查询很受欢迎:

"match": {
            "title": {
              "type": "phrase",
              "query": "非公开",
              "analyzer": "ik_max_word"
            }
          }

2)如果我使用" ABC"的术语查询,我得到20000+结果。

3)此外,如果我查询" ABCDE"使用匹配短语,我得到了4000个结果。

我在这里很困惑。该字段是一个分析字段,我认为如果我可以使用术语查询获得20000+结果,那么分析器可以很好地分离字符并将它们放入倒排索引中。我知道匹配词组查询在位置信息的帮助下结合了术语,所以我认为我应该在这里得到至少20000个结果而不是260个。

感谢您提供任何帮助!

elasticsearch.yml中ik的配置是:

index:
  analysis:
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true
index.analysis.analyzer.default.type : "ik"

0 个答案:

没有答案