个性化搜索排名处理器

personalize_search_ranking 搜索响应处理器会拦截搜索响应,并使用 Amazon Personalize 根据 Amazon Personalize 的排名对搜索结果进行重排。该排名基于用户过去的行为以及搜索项目和用户的元数据。

要使用 personalize_search_ranking 处理器,必须先安装 Amazon Personalize 搜索排名(opensearch-search-processor)插件。详细说明请参阅安装和配置 Amazon Personalize 搜索排名插件

请求正文字段

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

字段 数据类型 描述
campaign_arn 字符串 用于个性化结果的 Amazon Personalize 活动的亚马逊资源名称(ARN)。必需。
recipe 字符串 要使用的 Amazon Personalize 配方名称。目前,此字段唯一支持的值是 aws-personalized-ranking。必需。
weight 浮点数 与 UDB-SX 和 Amazon Personalize 提供的排名一起使用的权重。有效值在 [0.0, 1.0] 范围内。权重越接近 1.0,计算排名时给予 Amazon Personalize 的权重相对于 UDB-SX 越大。如果指定 0.0,则使用 UDB-SX 排名。如果指定 1.0,则使用 Amazon Personalize 排名。必需。
item_id_field 字符串 如果 UDB-SX 中索引文档的 _id 字段与您的 Amazon Personalize itemId 不匹配,请指定匹配的字段名称。默认情况下,插件假定 _id 数据与 Amazon Personalize 数据中的 itemId 匹配。
iam_role_arn 字符串 如果您使用多个角色来限制组织中不同用户组的权限,请指定有权访问 Amazon Personalize 的角色的 ARN。如果您仅使用 UDB-SX 密钥库中的 AWS 凭据,则可以省略此字段。可选。
tag 字符串 处理器的标识符。可选。
description 字符串 处理器的描述。可选。
ignore_failure 布尔值 如果为 true,UDB-SX 会忽略此处理器的任何失败,并继续运行搜索管道中的其余处理器。可选。默认为 false

示例

以下示例演示了使用带有 personalize_search_ranking 处理器的搜索管道。

创建搜索管道

以下请求创建一个带有 personalize_search_ranking 响应处理器的搜索管道:

PUT /_search/pipeline/my-pipeline
{
  "description": "用于应用来自 Amazon Personalize 的自定义重排的管道",
  "response_processors" : [
    {
      "personalized_search_ranking" : {
        "campaign_arn" : "Amazon Personalize Campaign ARN",
        "item_id_field" : "productId",
        "recipe" : "aws-personalized-ranking",
        "weight" : "0.3",
        "tag" : "personalize-processor",
        "iam_role_arn": "Role ARN",
        "aws_region": "AWS region"
      }
    }
  ]
}

使用搜索管道

要使用管道进行搜索,请在 search_pipeline 查询参数中指定管道名称。例如,以下请求使用上一节设置的管道搜索喜剧电影:

GET /movies/_search?search_pipeline=my-pipeline
{
  "query": {
    "multi_match": {
      "query": "Comedy",
      "fields": ["GENRES"]
    }
  },
  "ext": {
    "personalize_request_parameters": {
      "user_id": "user ID",
      "context": { "DEVICE" : "mobile phone" }
    }
  }
}

更多详细信息,请参阅个性化 UDB-SX(自托管)的搜索结果(请联系售前工作人员获取结果文档)。