应用筛选和排序

已完成

在搜索解决方案中,用户通常希望根据字段值进行筛选和排序来优化查询结果。 Azure AI 搜索通过搜索查询 API 支持这两种功能。

筛选结果

可通过两种方式向查询应用筛选:

  • 在 simple 搜索表达式中包含筛选条件。
  • 以包含 full 语法搜索表达式的 $filter 参数形式提供 OData 筛选表达式。

可向索引中任何可筛选的字段应用筛选。

例如,假设要查找包含文本“伦敦”的文档,且该文档的 author 字段值为 Reviewer。

可提交以下 simple 搜索表达式来实现此结果:

search=London+author='Reviewer'
queryType=Simple

另外,还可在包含 full Lucene 搜索表达式的 $filter 参数中使用 OData 筛选器,如下所示:

search=London
$filter=author eq 'Reviewer'
queryType=Full

提示

OData $filter 表达式区分大小写!

使用 facet 进行筛选

Facet 是根据结果集中的字段值向用户提供筛选条件的一种有用方法。 如果字段具有少量的离散值,而这些离散值可在用户界面中显示为链接或选项,那么最适合使用 facet。

若要使用 facet,必须指定要在初始查询中检索其可能值的可查找字段。 例如,可使用以下参数返回 author 字段的所有可能值:

search=*
facet=author

此查询的结果包括一系列离散 facet 值,你可在用户界面中显示这些值,供用户选择。 然后在后续查询中,可使用所选的 facet 值对结果进行筛选:

search=*
$filter=author eq 'selected-facet-value-here'

对结果进行排序

默认情况下,根据查询过程所分配的相关性分数对结果进行排序,评分最高的匹配项列在首位。 不过,你可通过包含指定一个或多个可排序字段和一个排序顺序(升序或降序)的 OData orderby 参数来覆盖此排序顺序。

例如,若要对结果排序以首先列出最近修改的文档,可使用以下参数值:

search=*
$orderby=last_modified desc

注意

有关使用筛选器的详细信息,请参阅 Azure AI 搜索中的筛选器。 若要了解如何处理结果(包括排序和命中突出显示),请参阅如何在 Azure AI 搜索中使用搜索结果