0

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

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

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

所以问题在于这个最小值应该如何匹配。我不明白它的机制。一旦它变成 5,无论我放什么,它都会返回相同的结果。任何 >=5 都会返回相同的结果。有人可以解释为什么会这样吗?

4

1 回答 1

0

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

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

于 2021-03-01T17:01:44.523 回答