disjunction max query
当一个文档存在多个匹配的词元时,不同的计算得分过程会导致最终的得分不同,而查询结果是按照得分高低排序的,因此计算得分的过程会影响到最终返回的结果是不是想要的结果
disjunction max query 以匹配度最高的得分为主要得分进行排序
参数:
- queries,必须,查询内容,支持多个查询的组合
- tie_breaker,可选,浮点数,非最高相关性得分的权重,默认0.0
disjunction max query 定义了自己的计算得分过程,进而影响最终的返回结果顺序
计算流程
- 获取匹配词元中得分最高的相关性得分
- 其他匹配的词元中得分乘以参数"tie_breaker"
- 第一步得分加上第二步得分为最终得分
通过计算过程可知,dis_max 查询会调整非最高得分匹配的语句的得分权重,从而是最高得分的匹配语句更加突出,这样能返回最佳的结果
示例
POST /index_dis_max/_search
{
"query": {
"dis_max": {
"tie_breaker": 0.7,
"boost": 1.2,
"queries": [
{
"match": {
"desc": "apple mac"
}
},
{
"match": {
"title": "apple mac"
}
}
]
}
}
}