ElasticSearch“ multi_match”和“ minimum_should_match”

时间:2018-08-02 22:02:00

标签: elasticsearch elasticsearch-1.7.5

我有一个非常奇怪的案例,我不明白为什么会这样。 这是查询的一部分。

      "must": [
        {
          "multi_match": {
            "query": "makkara",
            "type": "best_fields",
            "fields": ["text.general", "text.fi"],
            "minimum_should_match": 10
          }
        }
      ]

text.general字段是一个trigrams字段,这意味着使用ngram过滤器对其进行了分析,其中最大和最小gram为3。 基本上,有五个标记: “ mak”,“ akk”,“ kka”,“ kar”,“ ara”。 使用芬兰分析仪分析“ text.fi”字段。我尝试过,它返回“ makkar”(实际上是很愚蠢的)。

因此,问题在于该最小值应如何匹配。我不了解它的原理。变为5时,无论我放在哪里,它都会返回相同的结果。任何> = 5都将返回相同的结果。 有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

根据您的问题,两个字段的分析器为搜索词“makkara”生成的标记数量 <= 5。 因此,在这种情况下, minimum_should_match = 5 意味着所有搜索词都必须存在。

因此,任何大于 5 的 minimum_should_match 值仍然意味着所有 5 个术语都必须存在。这就是为什么您看不到大于 5 的值的结果发生变化的原因。