minimum_should_match 参数

参数 minimum_should_match 的可能的值如下:

类型 示例 描述

整数

3

表示一个固定值,与可选子句的数量无关。

负整数

-2

表示可选子句的总数,减去这个数目应该是强制性的。

百分比

75%

表示可选子句总数的这个百分比是必需的。根据百分比计算出的数字被向下舍入并用作最小值。

负百分比

-25%

表示可选子句总数的这个百分比可以缺失。 从百分比中计算出的数字向下四舍五入,然后从总数中减去以确定最小值。

组合

3<90%

一个正整数,后面跟小于号,再跟前面提到的任意一个说明符,这是一个条件规范。 它表示:如果可选子句的数量等于(或小于)整数,则它们都是必需的;但是如果可选子句的数量大于整数,则此规范适用。 在这个例子中:如果有 1 ~ 3 个子句,它们都是必需的,但是对于4个或更多个子句,只有90%是必需的。

多个组合

2<-25% 9<-3

多个条件规范可以用空格分隔,每个条件规范只对大于它前面的数字有效。 在这个例子中:如果有 1 ~ 2 个条款,两者都是必需的;如果有 3 ~ 9 个条款,除了 25% 都是必需的;如果有 9 个以上的条款,除了 3 都是必需的。

注意:

在处理百分比时,负值可用于在边缘(edge)情况下获得不同的行为。 在处理 4 个子句时,75% 和 -25% 的意思是一样的,但在处理 5 个子句时,75% 表示需要3个子句,而 -25% 表示需要 4 个子句。

如果基于规范的计算确定不需要可选子句,那么关于 bool 查询的常规规则在搜索时仍然适用(不包含必需子句的 bool 查询仍然必须匹配至少一个可选子句)

无论计算结果是多少,都不会使用大于可选子句数的值或小于1的值。 (即:无论计算结果的结果有多低或多高,要求的最小匹配数永远不会低于1或大于子句数。)