Azure AI 搜尋服務中的 OData $select 語法
在 Azure AI 搜尋中, $select 參數會指定要包含在搜尋結果中的欄位。 本文說明$select的 OData 語法,並提供範例。
欄位路徑建構和常數會在 Azure AI 搜尋的 OData 語言概觀中描述。 如需搜尋結果組合的詳細資訊,請參閱 如何在 Azure AI 搜尋服務中使用搜尋結果。
語法
$select參數會決定查詢結果集中傳回每個檔的哪些欄位。 下列 EBNF (Extended Backus-Naur Form) 會定義 $select 参數的文法:
select_expression ::= '*' | field_path(',' field_path)*
field_path ::= identifier('/'identifier)*
我們也提供互動式語法圖表:
注意
如需完整的 EBNF,請參閱 Azure AI 搜尋服務的 OData 運算式語法參考。
$select參數有兩種形式:
- 單星 (
*
),表示應該傳回所有可擷取的字段,或 - 欄位路徑的逗號分隔清單,可識別應該傳回哪些欄位。
使用第二個表單時,您只能在清單中指定可擷取的欄位。
如果您列出複雜欄位而不明確指定其子欄位,所有可擷取的子字段都會包含在查詢結果集中。 例如,假設您的索引具有 Address
具有 Street
、 City
和 Country
子欄位的欄位,這些欄位全都是可擷取的。 如果您在$select中指定Address
,則查詢結果會包含這三個子字段。
範例
在HotelId
結果中包含、 HotelName
和 Rating
最上層欄位,並包含 的City
Address
子欄位:
$select=HotelId, HotelName, Rating, Address/City
範例結果可能如下所示:
{
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"Rating": 4,
"Address": {
"City": "New York"
}
}
在 HotelName
結果中包含最上層欄位。 包含的所有子欄位 Address
。 Type
在集合中包含Rooms
每個物件的 和 BaseRate
子欄位:
$select=HotelName, Address, Rooms/Type, Rooms/BaseRate
範例結果可能如下所示:
{
"HotelName": "Stay-Kay City Hotel",
"Rating": 4,
"Address": {
"StreetAddress": "677 5th Ave",
"City": "New York",
"StateProvince": "NY",
"Country": "USA",
"PostalCode": "10022"
},
"Rooms": [
{
"Type": "Budget Room",
"BaseRate": 9.69
},
{
"Type": "Budget Room",
"BaseRate": 8.09
}
]
}