在 Azure AI 搜索中,$select 参数指定要包含在搜索结果中的字段。 本文介绍 $select 的 OData 语法,并提供了示例。
Azure AI 搜索中的 OData 语言概述中介绍了字段路径构造和常量。 有关搜索结果组合的详细信息,请参阅如何使用 Azure AI 搜索中的搜索结果。
语法
$select 参数确定在查询结果集中返回每个文档的哪些字段。 以下 EBNF(扩展巴科斯-瑙尔范式)定义了 $select 参数的语法:
select_expression ::= '*' | field_path(',' field_path)*
field_path ::= identifier('/'identifier)*
下面还提供了交互式语法图:
注意
请参阅适用于 Azure AI 搜索的 OData 表达式语法参考以获取完整的 EBNF。
$select 参数有两种形式:
- 单个星 (*),指示应返回所有可检索字段,或
- 以逗号分隔的字段路径列表,标识应返回的字段。
使用第二种形式时,只能在列表中指定可检索字段。
如果列出一个复杂字段而未显式指定其子字段,则所有可检索的子字段都将包含在查询结果集中。 例如,假设索引有一个 Address 字段,其中 Street、City 和 Country 子字段都是可检索的。 如果在 $select 中指定 Address,则查询结果将包括所有三个子字段。
示例
在结果中包括 HotelId、HotelName 和 Rating 顶级字段,以及 Address 的 City 子字段:
    $select=HotelId, HotelName, Rating, Address/City
示例结果可能如下所示:
{
  "HotelId": "1",
  "HotelName": "Secret Point Motel",
  "Rating": 4,
  "Address": {
    "City": "Beijing"
  }
}
在结果中包含 HotelName 顶级字段。 包括 Address 的所有子字段。 在 Rooms 集合中包括每个对象的 Type 和 BaseRate 子字段:
    $select=HotelName, Address, Rooms/Type, Rooms/BaseRate
示例结果可能如下所示:
{
  "HotelName": "Secret Point Motel",
  "Rating": 4,
  "Address": {
    "StreetAddress": "677 5th Ave",
    "City": "Beijing",
    "StateProvince": "NY",
    "Country": "USA",
    "PostalCode": "10022"
  },
  "Rooms": [
    {
      "Type": "Budget Room",
      "BaseRate": 9.69
    },
    {
      "Type": "Budget Room",
      "BaseRate": 8.09
    }
  ]
}