一个像下面那样的简单dis_max查询会选择出拥有最佳匹配字段的查询子句,而忽略其他的查询子句:
// SENSE: 110_Multi_Field_Search/15_Best_fields.json
<1> 可以发现,两份文档的分值是一模一样的。
tie_breaker
但是,将其它匹配的查询子句考虑进来也是可能的。通过指定tie_breaker参数:
// SENSE: 110_Multi_Field_Search/15_Best_fields.json
它会返回以下结果:
tie_breaker参数会让dis_max查询的行为更像是dis_max和bool的一种折中。它会通过下面的方式改变分值计算过程:
通过tie_breaker参数,所有匹配的子句都会起作用,只不过最佳匹配子句的作用更大。