Dis Max 查询

<< Bool Query                                                                                                                       Function Score Query >>


Dis Max Query

此查询生成由其子查询生成的文档的并集,并为每个文档分配由任意子查询生成的该文档的最大分数,以及任何其他匹配子查询的分数增量即 tie breaking 属性。 当在具有不同增压因子的多个字段中搜索字词(使得字段不能等价地组合到单个搜索字段中)时,这是有用的。我们希望主分数是与最高提升相关联的分数,而不是字段分数的总和(如布尔查询将给出的)。如果查询是“albino elephant”,这确保匹配一个字段的“albino”和匹配另一个字段的“elephant”得到比匹配两个字段的“albino”更高的分数。为了得到这个结果,使用 Boolean QueryDisjunctionMax Query :在DisjunctionMaxQuery 的每个字段中搜索每个术语,而这些 DisjunctionMaxQuery 的集合组合成一个 BooleanQuerytie breaker 属性允许将会使多个字段中包括相同条款的结果,比仅在多个字段中的最佳字段里包括该条款的结果更好地判断,而不会将其与多个字段中的两个不同条款的 better case 相混淆。默认tie_breaker 为0.0 。 该查询映射到 LuceneDisjunctionMaxQuery

GET /_search
{
    "query": {
        "dis_max" : {
            "tie_breaker" : 0.7,
                "boost" : 1.2,
                "queries" : [
                {
                    "term" : { "age" : 34 }
                },
                {
                    "term" : { "age" : 35 }
                }
                ]
        }
    }
}

<< Bool Query                                                                                                                       Function Score Query >>