一个像下面那样的简单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参数,所有匹配的子句都会起作用,只不过最佳匹配子句的作用更大。