程序猿
微录

ElasticSearch之组合查询 ---> 最佳得分查询【disjunction max】

程序猿微录 发布于: 2021-01-21 09:58 40 0 0 0
首页
文章
专栏
问答
寄语
公告
  • 前往登录

ElasticSearch之组合查询 ---> 最佳得分查询【disjunction max】

程序猿微录 发布于 2021-01-21 09:58 40 0 0 0
所属文册: 搜索引擎 文章标签: ElasticSearch 、Disjunction Max Query

disjunction max query

当一个文档存在多个匹配的词元时,不同的计算得分过程会导致最终的得分不同,而查询结果是按照得分高低排序的,因此计算得分的过程会影响到最终返回的结果是不是想要的结果

disjunction max query 以匹配度最高的得分为主要得分进行排序

参数:

  • queries,必须,查询内容,支持多个查询的组合
  • tie_breaker,可选,浮点数,非最高相关性得分的权重,默认0.0

disjunction max query 定义了自己的计算得分过程,进而影响最终的返回结果顺序

计算流程

  1. 获取匹配词元中得分最高的相关性得分
  2. 其他匹配的词元中得分乘以参数"tie_breaker"
  3. 第一步得分加上第二步得分为最终得分

通过计算过程可知,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"
          }
        }
      ]
    }
  }
}