Azure AI Search の OData $select構文

Azure AI Search では、 $select パラメータによって、検索結果に含めるフィールドが指定されます。 この記事では、$select の OData 構文について説明し、例を示します。

フィールド パスの構築と定数については、Azure AI SearchのOData 言語の概要 を参照してください。 検索結果の構成の詳細については、「 Azure AI Searchで検索結果を操作する方法」を参照してください。

構文

$select パラメーターによって、各ドキュメントのどのフィールドがクエリ結果セットに返されるかが決まります。 次の EBNF (拡張バッカスナウア記法) に $select パラメーターの文法が定義されています。

select_expression ::= '*' | field_path(',' field_path)*

field_path ::= identifier('/'identifier)*

対話型の構文ダイアグラムも利用できます。

Note

完全な EBNF については、Azure AI Searchの OData 式構文参照 を参照してください。

$select パラメーターには 2 つの形式があります。

  1. 1 つのアスタリスク (*)。取得できるすべてのフィールドを返すことを指定します。
  2. 複数のフィールド パスをコンマで区切った一覧。返すフィールドを指定します。

2 つ目の形式を使用するときは、一覧の取得できるフィールドのみを指定できます。

サブフィールドを明示的に指定せずに複合フィールドを列挙すると、取得できるすべてのサブフィールドがクエリ結果セットに含まれます。 たとえば、インデックスに、StreetCityCountry というサブフィールドがある Address フィールドがあり、いずれも取得できるとします。 $selectAddress を指定した場合、クエリ結果には 3 つのサブフィールドすべてが含まれます。

結果に HotelIdHotelNameRating の最上位フィールドを含め、AddressCity サブフィールドを含めます。

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

結果の例は次のようになります。

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

結果に HotelName 最上位フィールドを含めます。 Address のサブフィールドをすべて含めます。 Rooms コレクション内の各オブジェクトの Type および 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
    }
  ]
}

次のステップ