我有一个非常奇怪的案例,我不明白为什么会这样。 这是查询的一部分。
"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都将返回相同的结果。 有人可以解释为什么会这样吗?
答案 0 :(得分:0)
根据您的问题,两个字段的分析器为搜索词“makkara”生成的标记数量 <= 5。 因此,在这种情况下, minimum_should_match = 5 意味着所有搜索词都必须存在。
因此,任何大于 5 的 minimum_should_match 值仍然意味着所有 5 个术语都必须存在。这就是为什么您看不到大于 5 的值的结果发生变化的原因。