Syntaxe OData $select dans Azure AI Search

Dans Azure AI Search, le paramètre $select spécifie les champs à inclure dans les résultats de recherche. Cet article décrit la syntaxe OData de $select et fournit des exemples.

La construction et les constantes du chemin d’accès aux champs sont décrites dans la vue d’ensemble du langage OData dans Azure AI Search. Pour plus d’informations sur la composition des résultats de la recherche, consultez Comment utiliser les résultats de la recherche dans Azure AI Search.

Syntaxe

Le paramètre $select détermine quels champs de chaque document sont renvoyés dans le jeu de résultats de la requête. L’extension EBNF suivante (Extended Backus-Naur Form) définit la grammaire du paramètre $select :

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

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

Un diagramme de syntaxe interactif est également disponible :

Le paramètre $select se présente sous deux formes :

  1. Une seule étoile (*), indiquant que tous les champs récupérables doivent être renvoyés, ou
  2. Une liste de chemins d’accès aux champs séparés par des virgules identifiant les champs à renvoyer.

Lorsque vous utilisez la deuxième forme, vous pouvez uniquement spécifier les champs récupérables dans la liste.

Si vous répertoriez un champ complexe sans spécifier explicitement ses sous-champs, tous les sous-champs récupérables figureront dans le jeu de résultats de la requête. Par exemple, supposons que votre index comporte un champ Address avec les sous-champs Street, City et Country qui sont tous récupérables. Si vous spécifiez Address dans $select, les résultats de la requête incluront les trois sous-champs.

Exemples

Incluez les champs HotelId, HotelName et Rating de niveau supérieur dans les résultats, ainsi que le sous-champ City de Address :

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

Le résultat peut ressembler à cet exemple :

{
  "HotelId": "1",
  "HotelName": "Stay-Kay City Hotel",
  "Rating": 4,
  "Address": {
    "City": "New York"
  }
}

Incluez le champ HotelName de niveau supérieur dans les résultats. Incluez tous les sous-champs de Address. Incluez les sous-champs Type et BaseRate de chaque objet de la collection Rooms :

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

Le résultat peut ressembler à cet exemple :

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

Étapes suivantes