Syntaxis van OData $select in Azure Cognitive Search

In Azure Cognitive Search geeft de parameter $select aan welke velden moeten worden opgenomen in zoekresultaten. In dit artikel wordt de OData-syntaxis van $select beschreven en vindt u voorbeelden.

De opbouw van veldpaden en constanten worden beschreven in het overzicht van de OData-taal in Azure Cognitive Search. Zie Werken met zoekresultaten in Azure Cognitive Search voor meer informatie over het samenstellen van zoekresultaten.

Syntax

De parameter $select bepaalt welke velden voor elk document worden geretourneerd in de queryresultatenset. De volgende EBNF (Extended Backus-Naur Form) definieert de grammatica voor de parameter $select :

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

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

Er is ook een interactief syntaxisdiagram beschikbaar:

De parameter $select heeft twee vormen:

  1. Een enkele ster (*), die aangeeft dat alle velden die kunnen worden opgehaald, moeten worden geretourneerd, of
  2. Een door komma's gescheiden lijst met veldpaden, waarmee wordt opgegeven welke velden moeten worden geretourneerd.

Wanneer u het tweede formulier gebruikt, kunt u alleen opvraagbare velden opgeven in de lijst.

Als u een complex veld weergeeft zonder expliciet de subvelden op te geven, worden alle ophaalbare subvelden opgenomen in de queryresultatenset. Stel dat uw index een Address veld heeft met Street, Cityen Country subvelden die allemaal kunnen worden opgehaald. Als u opgeeft Address in $select, bevatten de queryresultaten alle drie de subvelden.

Voorbeelden

Neem de HotelIdvelden , HotelNameen het Rating hoogste niveau op in de resultaten en neem het City subveld op van Address:

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

Een voorbeeldresultaat kan er als volgt uitzien:

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

Neem het veld op het HotelName hoogste niveau op in de resultaten. Neem alle subvelden van Addressop . Neem de Type subvelden en BaseRate van elk object op in de Rooms verzameling:

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

Een voorbeeldresultaat kan er als volgt uitzien:

{
  "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
    }
  ]
}

Volgende stappen