评分排序器处理器
2.19 版本引入
score-ranker-processor
是一种基于排名的搜索阶段结果处理器,它在搜索执行的查询和获取阶段之间运行。它截取查询阶段的结果,然后使用倒数排名融合(RRF)算法结合不同的查询子句,以生成最终的搜索结果排序列表。RRF 是一种结合多个查询的方法,它根据每个文档在每个查询中的排名的倒数进行评分,然后将这些分数相加,以创建最终的统一排名。
请求正文字段
下表列出了所有可用的请求字段。
字段 | 数据类型 | 描述 :— | :— | :— combination.technique
| 字符串 | 用于组合分数的技巧。必填。有效值为 rrf
。 combination.rank_constant
| 整型 | 在计算倒数分数之前添加到每个文档排名的常数。必须大于或等于 1
。较大的排名常数会使分数更均匀,从而减少排名靠前结果的影响。较小的排名常数会在排名之间创建更大的分数差异,从而给予排名靠前的项目更大的权重。可选。默认值为 60
。 combination.parameters.weights
| 浮点数值数组 | 指定用于每个查询的权重。有效值在 [0.0, 1.0] 范围内,表示十进制百分比。权重越接近 1.0,查询的权重越大。weights
数组中的值数量必须等于查询的数量。数组中所有值的总和必须等于 1.0。可选。如果未提供,则所有查询都将被赋予相同的权重。
示例
以下示例演示了如何使用带有 score-ranker-processor
的搜索管道。
创建带有评分排序器处理器的搜索管道
以下请求创建一个包含 score-ranker-processor
的搜索管道,该处理器使用 rrf
组合技术
PUT /_search/pipeline/<rrf-pipeline>
{
"description": "Post processor for hybrid RRF search",
"phase_results_processors": [
{
"score-ranker-processor": {
"combination": {
"technique": "rrf"
}
}
}
]
}
使用自定义参数调优搜索管道
在上一节创建的搜索管道中应用自定义的 rank-constant
参数。rank-constant
的默认值为 60。在以下示例中,rank-constant
设置为 40
PUT /_search/pipeline/<rrf-pipeline>
{
"description": "Post processor for hybrid RRF search",
"phase_results_processors": [
{
"score-ranker-processor": {
"combination": {
"technique": "rrf",
"rank_constant": 40
}
}
}
]
}
使用 rrf
技术组合搜索结果时,为每个子查询应用自定义 weights
。默认情况下,每个子查询的权重相等,为 1。在以下示例中,子查询 1 的权重为 0.7,子查询 2 的权重为 0.3
PUT /_search/pipeline/<rrf-pipeline>
{
"description": "Post processor for hybrid RRF search",
"phase_results_processors": [
{
"score-ranker-processor": {
"combination": {
"technique": "rrf",
"rank_constant": 40,
"parameters": {
"weights":[
0.7,
0.3
]
}
}
}
}
]
}
有关设置混合搜索的更多信息,请参阅混合搜索。
后续步骤
- 有关
score-ranker-processor
和 RRF 的详细探索,包括实验数据和实际用例,请参阅这篇博客文章。该博客文章提供了示例、性能比较以及关于 RRF 如何在各种场景中提高搜索相关性的见解。