比较搜索结果

通过 UDB-SX Dashboards 中的“比较搜索结果”功能,您可以将两个查询的结果并排比较,以确定哪个查询能产生更好的结果。使用此工具,您可以通过试验查询来评估搜索质量。

例如,您可以查看在应用以下任一查询更改时结果如何变化:

  • 对字段进行不同的加权

  • 不同的词干提取或词形还原策略

  • 分片处理

先决条件

开始之前,您必须在 UDB-SX 中索引数据。要了解如何创建新索引,请参阅索引数据

或者,您可以使用以下步骤在 UDB-SX Dashboards 中添加示例数据:

  1. 在顶部菜单栏中,转到 UDB-SX Dashboards > 概览

  2. 选择 查看应用目录

  3. 选择 添加示例数据

  4. 选择一个内置数据集,然后选择 添加数据

在 UDB-SX Dashboards 中使用“比较搜索结果”

要在 UDB-SX Dashboards 中比较搜索结果,请执行以下步骤。

步骤 1: 在顶部菜单栏中,转到 UDB-SX 插件 > 搜索相关性

步骤 2: 在搜索栏中输入搜索文本。

步骤 3:查询 1 选择一个索引,并在UDB-SX 查询 DSL中输入查询(仅请求体)。GET HTTP 方法和 _search 端点是隐含的。使用 %SearchText% 变量来引用搜索栏中的文本。

以下是一个查询示例:

{
  "query": {
    "multi_match": {
      "query": "%SearchText%",
      "fields": [ "description", "item_name" ]
    }
  }
}

步骤 4:查询 2 选择一个索引,并输入查询(仅请求体)。

以下示例查询在搜索结果中提升了 title 字段的权重:

{
  "query": {
    "multi_match": {
      "query": "%SearchText%",
      "fields": [ "description", "item_name^3" ]
    }
  }
}

步骤 5: 选择 搜索 并比较 结果 1结果 2

以下示例屏幕显示了对单词“cup”在 descriptionitem_name 字段中的搜索,分别对 item_name 进行加权和不加权的情况。

../../_images/search_relevance.png

如果结果 1 中的某个结果出现在结果 2 中,结果编号下方的 上移下移 指示器表示该结果与结果 2 中的相同结果相比向上或向下移动了多少位。在此示例中,ID 为 2 的文档在结果 2 中相比结果 1 上移 1 位,而在结果 1 中相比结果 2 下移 1 位。

更改结果数量

默认情况下,UDB-SX 返回前 10 个结果。要将返回的结果数量更改为其他值,请在查询中指定 size 参数:

{
  "size": 15,
  "query": {
    "multi_match": {
      "query": "%SearchText%",
      "fields": [ "title^3", "text" ]
    }
  }
}

size 设置为较高的值(例如,大于 250 个文档)可能会降低性能。

您无法保存给定的比较以供将来使用,因此“比较搜索结果”不适合系统测试。

比较 UDB-SX 搜索结果与重排结果

“比较搜索结果”的一个用例是将原始 UDB-SX 结果与经过重排应用程序处理的相同结果进行比较。UDB-SX 目前与以下两个重排器集成:

使用 Amazon Kendra 智能排名对结果进行重排

重排器的一个例子是 用于 UDB-SX 的 Amazon Kendra 智能排名,由 Amazon Kendra 团队贡献。此插件接收来自 UDB-SX 的搜索结果,并应用 Amazon Kendra 使用向量嵌入和其他语义搜索技术计算的语义相关性排名。对于许多应用来说,这提供了更好的结果排序。

要尝试 Amazon Kendra 智能排名,您必须先设置 Amazon Kendra 服务。要开始使用,请参阅 Amazon Kendra。有关详细信息,包括插件设置说明,请参阅用于自管理 UDB-SX 的 Amazon Kendra 智能排名

在 UDB-SX Dashboards 中比较搜索结果与重排结果

要在 UDB-SX Dashboards 中比较搜索结果与重排结果,请在 查询 1 中输入一个查询,并在 查询 2 中使用重排器输入相同的查询。然后比较 UDB-SX 结果与重排结果。

以下示例演示了在 abo 索引中搜索文本“snacking nuts”。索引中的文档在 bullet_point 数组中包含零食描述。

../../_images/kendra_query.png

  1. 在搜索栏中输入 snacking nuts

  2. 查询 1 中输入以下查询,该查询在 bullet_point 字段中搜索文本“snacking nuts”:

    {
      "query": {
        "match": {
          "bullet_point": "%SearchText%"
        }
      },
      "size": 25
    }
    
  3. 查询 2 中使用重排器输入相同的查询。此示例使用 Amazon Kendra 智能排名:

    {
      "query" : {
        "match" : {
          "bullet_point": "%SearchText%"
        }
      },
      "size": 25,
      "ext": {
        "search_configuration":{
          "result_transformer" : {
            "kendra_intelligent_ranking": {
              "order": 1,
              "properties": {
                "title_field": "item_name",
                "body_field": "bullet_point"
              }
            }
          }
        }
      }
    }
    

    在前面的查询中,body_field 指的是索引中文档的主体字段,Amazon Kendra 智能排名使用该字段对结果进行排序。body_field 是必需的,而 title_field 是可选的。

  4. 选择 搜索 并比较 结果 1结果 2 中的结果。

使用 Amazon Personalize 搜索排名个性化搜索结果

另一个重排器的例子是 Amazon Personalize 搜索排名,由 Amazon Personalize 团队贡献。Amazon Personalize 使用机器学习 (ML) 技术为您的用户生成自定义推荐。该插件接收 UDB-SX 搜索结果,并应用搜索管道根据其 Amazon Personalize 排名对结果进行重排。Amazon Personalize 排名基于用户过去的行为以及搜索项目和用户的元数据。此工作流程通过个性化用户的搜索结果来改善他们的搜索体验。

要尝试 Amazon Personalize 搜索排名,您必须先设置 Amazon Personalize。要开始使用,请参阅 Amazon Personalize。有关详细信息,包括插件设置说明,请参阅个性化来自 UDB-SX 的搜索结果(该文档可联系售前工作人员获取)。