Sintaxis de $select de OData en Azure AI Search

En Azure AI Search, el parámetro $select especifica los campos que se deben incluir en los resultados de la búsqueda. En este artículo se describe la sintaxis de OData de $select y se proporcionan ejemplos.

La construcción y las constantes de las rutas de acceso de campo se describen en Introducción al lenguaje OData en Azure AI Search. Para obtener más información sobre la composición de los resultados de la búsqueda, consulta Cómo trabajar con los resultados de búsqueda en Azure AI Search.

Sintaxis

El parámetro $select determina qué campos de cada documento se devuelven en el conjunto de resultados de la consulta. La siguiente EBNF (notación de Backus-Naur extendida) define la gramática del parámetro $select:

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

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

También está disponible un diagrama de sintaxis interactivo:

Nota:

Consulta Referencia de sintaxis de expresiones OData para Azure AI Search para obtener la EBNF completa.

El parámetro $select tiene dos formatos:

  1. Una sola estrella (*), que indica que se deben devolver todos los campos recuperables, o bien
  2. Una lista separada por comas de las rutas de acceso de campo, para identificar qué campos se deben devolver.

Al usar el segundo formato, en la lista solo se pueden especificar campos recuperables.

Si se indica un campo complejo sin especificar sus subcampos de forma explícita, se incluyen todos los campos secundarios recuperables en el conjunto de resultados de la consulta. Por ejemplo, imagine que el índice tiene un campo Address con los subcampos Street, City y Country, todos ellos recuperables. Si especifica Address en $select, se incluirán los tres subcampos en los resultados de la consulta.

Ejemplos

Incluir los campos de nivel superior HotelId, HotelName y Rating en los resultados, junto con el subcampo City de Address:

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

Un resultado de ejemplo podría tener este aspecto:

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

Incluir el campo de nivel superior HotelName en los resultados. Incluir todos los subcampos de Address. Incluir los subcampos Type y BaseRate de cada objeto de la colección Rooms:

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

Un resultado de ejemplo podría tener este aspecto:

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

Pasos siguientes