Link Search Menu Expand Document Documentation Menu

比较单个查询

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

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

  • 字段权重不同
  • 不同的词干提取或词形还原策略
  • 分块

先决条件

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

另外,您可以使用以下步骤在 OpenSearch Dashboards 中添加示例数据:

  1. 在顶部菜单栏中,转到 OpenSearch Dashboards > 概述
  2. 选择查看应用目录
  3. 选择添加示例数据
  4. 选择一个内置数据集,然后选择添加数据

在 OpenSearch Dashboards 中使用“比较搜索结果”

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

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

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

步骤 3:查询 1选择一个索引,并在OpenSearch Query 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

以下示例屏幕显示了在descriptionitem_name字段中搜索单词“cup”的结果,分别展示了提升和未提升item_name字段的情况。

Compare search results

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

更改结果数量

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

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

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

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

使用搜索相关性工作台比较 OpenSearch 搜索结果

搜索相关性工作台提供了更丰富的可视化选项,用于检查两个查询之间的差异。

要使用搜索相关性工作台,请遵循步骤 1-4。显示的搜索结果和查看差异的选项如下图所示。

Compare search results

顶部部分提供了结果摘要:左侧查询检索到的唯一结果有多少,右侧查询检索到的唯一结果有多少,以及有多少结果同时属于两个查询?

接下来是检索结果的可视化表示。默认情况下显示唯一标识符字段 (_id)。您可以通过在显示字段下拉列表中选择不同的字段来更改此设置。在并排视图中,您可以看到两个结果列表中所有共同文档的位置变化。选择一个项目会显示索引中所有存储的字段,以便于文档识别。

最后,搜索相关性工作台允许您从下拉列表中选择不同的可视化样式:

  • 默认样式:两种结果列表文档使用不同的颜色(左侧的唯一结果为黄色,右侧为紫色,共同结果显示为绿色)。
  • 排名变化颜色编码:所有唯一文档均为紫色,共同结果为绿色,以突出排名变化。
  • 排名变化颜色编码 2:所有唯一文档均为灰色,共同结果为绿色,以突出排名变化。
  • 维恩图颜色编码:所有唯一文档均为紫色,共同结果为蓝色,与两个结果列表顶部的维恩图类似。

比较 OpenSearch 搜索结果与重新排序的结果

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

使用适用于 OpenSearch 的 Amazon Kendra 智能排序重新排序结果

适用于 OpenSearch 的 Amazon Kendra 智能排序是重新排序器的一个示例,由 Amazon Kendra 团队贡献。此插件从 OpenSearch 获取搜索结果,并应用 Amazon Kendra 使用向量嵌入和其他语义搜索技术计算的语义相关性排名。对于许多应用程序,这提供了更好的结果排名。

要试用 Amazon Kendra 智能排序,您必须首先设置 Amazon Kendra 服务。要开始使用,请参阅Amazon Kendra。有关详细信息(包括插件设置说明),请参阅适用于自管型 OpenSearch 的 Amazon Kendra 智能排序

在 OpenSearch Dashboards 中比较搜索结果与重新排序的结果

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

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

OpenSearch Intelligent Ranking query

  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) 技术为您的用户生成自定义推荐。该插件获取 OpenSearch 搜索结果,并应用搜索管道根据其 Amazon Personalize 排名对其进行重新排序。Amazon Personalize 排名基于用户的过去行为以及搜索项和用户的元数据。此工作流通过个性化搜索结果来改善用户的搜索体验。

要试用 Amazon Personalize 搜索排序,您必须首先设置 Amazon Personalize。要开始使用,请参阅Amazon Personalize。有关详细信息(包括插件设置说明),请参阅个性化 OpenSearch 搜索结果