Azure AI 搜尋中的 OData $select語法

在 Azure AI 搜尋中, $select 參數會指定要包含在搜尋結果中的欄位。 本文說明$selectOData 語法,並提供範例。

欄位路徑建構和常數會在 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參數有兩種形式:

  1. 單星 (*),表示應該傳回所有可擷取的字段,或
  2. 欄位路徑的逗號分隔清單,可識別應該傳回哪些欄位。

使用第二個表單時,您只能在清單中指定可擷取的欄位。

如果您列出複雜欄位而不明確指定其子欄位,所有可擷取的子字段都會包含在查詢結果集中。 例如,假設您的索引具有 Address 具有 StreetCityCountry 子欄位的欄位,這些欄位全都是可擷取的。 如果您在$select指定Address,則查詢結果會包含這三個子字段。

範例

HotelId結果中包含、 HotelNameRating 最上層欄位,並包含 的CityAddress子欄位:

    $select=HotelId, HotelName, Rating, Address/City

範例結果可能如下所示:

{
  "HotelId": "1",
  "HotelName": "Secret Point Motel",
  "Rating": 4,
  "Address": {
    "City": "New York"
  }
}

HotelName 結果中包含最上層欄位。 包含的所有子欄位 AddressType在集合中包含Rooms每個物件的 和 BaseRate 子欄位:

    $select=HotelName, Address, Rooms/Type, Rooms/BaseRate

範例結果可能如下所示:

{
  "HotelName": "Secret Point Motel",
  "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
    }
  ]
}

下一步