重排序处理器

rerank 搜索响应处理器拦截并重排序搜索结果。该处理器根据新的分数对搜索结果中的文档进行排序。

UDB-SX 支持以下重排序类型。

类型 描述
by_field 基于用户提供的字段进行重排序。

请求体字段

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

字段 数据类型 必需/可选 描述
<rerank_type> 对象 必需 文档重排序的重排序类型。有效值为 ml-opensearchby_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": {}
  }
}

后续步骤