重排序处理器
rerank 搜索响应处理器拦截并重排序搜索结果。该处理器根据新的分数对搜索结果中的文档进行排序。
UDB-SX 支持以下重排序类型。
| 类型 | 描述 |
|---|---|
by_field |
基于用户提供的字段进行重排序。 |
请求体字段
下表列出了所有可用的请求字段。
| 字段 | 数据类型 | 必需/可选 | 描述 |
|---|---|---|---|
<rerank_type> |
对象 | 必需 | 文档重排序的重排序类型。有效值为 ml-opensearch 和 by_field。 |
context |
对象 | 对于 by_field 重排序类型为可选且不影响结果。 |
为 rerank 处理器提供查询时重排序所需的信息。 |
tag |
字符串 | 可选 | 处理器的标识符。 |
description |
字符串 | 可选 | 处理器的描述。 |
ignore_failure |
布尔值 | 可选 | 如果为 true,UDB-SX 忽略此处理器的任何故障并继续运行搜索管道中的其余处理器。默认值为 false。 |
by_field 重排序类型
要通过文档字段重排序结果,请指定 by_field 重排序类型。
by_field 对象支持以下字段。
| 字段 | 数据类型 | 必需/可选 | 描述 |
|---|---|---|---|
target_field |
字符串 | 必需 | 指定字段名称或包含用于重排序的分数字段的点路径。 |
remove_target_field |
布尔值 | 可选 | 如果为 true,响应中不包含用于执行重排序的 target_field。默认值为 false。 |
keep_previous_score |
布尔值 | 可选 | 如果为 true,响应包含一个 previous_score 字段,其中包含重排序前计算的分数,这在调试时可能很有用。默认值为 false。 |
示例
以下示例演示了使用包含通过 by_field 重排序类型实现的 rerank 处理器的搜索管道。完整示例请参阅按文档字段重排序。
创建搜索管道
以下请求创建一个包含 by_field 重排序类型响应处理器的搜索管道,该处理器按 reviews.stars 字段对文档进行排序,并指定返回原始文档分数:
PUT /_search/pipeline/rerank_byfield_pipeline
{
"response_processors": [
{
"rerank": {
"by_field": {
"target_field": "reviews.stars",
"keep_previous_score" : true
}
}
}
]
}
使用搜索管道
要将搜索管道应用于查询,请在查询参数中提供搜索管道名称:
POST /book-index/_search?search_pipeline=rerank_byfield_pipeline
{
"query": {
"match_all": {}
}
}
后续步骤
了解更多关于重排序搜索结果的信息。
查看使用交叉编码器模型进行重排序的完整示例。
查看按文档字段重排序的完整示例。
查看使用外部托管的交叉编码器模型按字段重排序的综合示例。