Azure AI 搜索中的 OData $select 语法
在 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
}
]
}