分数排序器处理器

score-ranker-processor 是一个基于排序的搜索阶段结果处理器,它在搜索执行的查询阶段和提取阶段之间运行。它拦截查询阶段的结果,然后使用逆序排名融合(RRF)算法来合并不同的查询子句,从而生成最终的搜索结果排序列表。RRF 是一种合并多个查询的方法,它根据每个文档在各个查询中的排名的倒数进行评分,然后将这些分数相加,从而创建最终的统一排名。

请求体字段

下表列出了所有可用的请求字段。

字段 数据类型 描述
combination.technique 字符串 用于合并分数的技术。必需。有效值为 rrf
combination.rank_constant 整数 在计算倒数分数之前,添加到每个文档排名上的常数。必须大于或等于 1。较大的排名常数会使分数更均匀,降低排名靠前结果的影响力。较小的排名常数会在不同排名间产生更大的分数差异,给予排名靠前的条目更多权重。可选。默认值为 60

示例

以下示例演示了如何使用包含 score-ranker-processor 的搜索管道。

创建搜索管道

以下请求创建了一个搜索管道,其中包含一个使用 rrf 合并技术的 score-ranker-processor

PUT /_search/pipeline/<rrf-pipeline>
{
  "description": "Post processor for hybrid RRF search",
  "phase_results_processors": [
    {
      "score-ranker-processor": {
        "combination": {
          "technique": "rrf"
        }
      }
    }
  ]
}

使用搜索管道

应用上一节创建的搜索管道,以便使用所选技术合并分数。在此示例中,您将把 rank_constant 作为管道的一部分进行指定:

PUT /_search/pipeline/<rrf-pipeline>
{
  "description": "Post processor for hybrid RRF search",
  "phase_results_processors": [
    {
      "score-ranker-processor": {
        "combination": {
          "technique": "rrf",
          "rank_constant": 40
        }
      }
    }
  ]
}

有关设置混合搜索的更多信息,请参阅 混合搜索