Buscar documentos (API REST de versión preliminar)

Se aplica a: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Importante

2023-07-01-Preview agrega:

  • Parámetro de consulta "vectores" que especifica las solicitudes de consulta vectoriales. Cada objeto debe contener la representación vectorial de la consulta, el número "k" de vecinos más cercanos que se devolverán en los resultados y los campos vectoriales que se van a usar durante la ejecución de la consulta.

2021-04-30-Preview agrega:

  • "semanticConfiguration" admite la clasificación semántica de ámbito a campos específicos.
  • "captions" devuelve frases extraídas de pasajes clave en los documentos con clasificación semántica más alta.

2020-06-30-Preview agrega:

  • "queryType=semantic" admite la repetición semántica y las respuestas.
  • "searchFields" en una consulta semántica establece el orden de prioridad de los campos usados para formular subtítulos y respuestas. Este enfoque se reemplazó por "semanticConfiguration" en 2021-04-30-Preview y ahora está obsoleto.
  • "corrector ortográfico" habilita la corrección ortográfica en la entrada de consulta.
  • Se requiere "queryLanguage" para "queryType =semantic" y "speller".
  • "featuresMode" desempaqueta una puntuación de búsqueda, la generación de informes sobre la frecuencia de términos por campo, la puntuación de similitud por campo y el número de coincidencias únicas por campo.

Una solicitud de consulta tiene como destino la colección de documentos de un único índice en un servicio de búsqueda. Incluye parámetros que definen los criterios de coincidencia y los parámetros que dan forma a la respuesta. También puede usar un alias de índice para dirigirse a un índice determinado en lugar de usar el propio nombre del índice.

Puede usar GET o POST para la mayoría de las consultas, pero debe usar POST para la búsqueda de vectores porque los parámetros de consulta vectorial no caben en un URI. Los parámetros de consulta se especifican en la cadena de consulta para las solicitudes GET y en el cuerpo de la solicitud para las solicitudes POST.

GET https://[service name].search.windows.net/indexes/[index name]/docs?[query parameters] 
  Content-Type: application/json   
  api-key: [admin or query key]  

Si usa POST, agregue la acción "search" como parámetro URI.

POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=[api-version]  
  Content-Type: application/json  
  api-key: [admin or query key]  

Cuando se llama con GET, la longitud de la dirección URL de la solicitud no puede superar los 8 KB. Esta longitud es suficiente para la mayoría de las aplicaciones. Sin embargo, algunas aplicaciones producen consultas grandes, específicamente cuando se usan expresiones de filtro OData. Para estas aplicaciones, HTTP POST es una mejor opción porque permite filtros más grandes que GET.

Con POST, el número de cláusulas en un filtro es el factor limitador, no el tamaño de la cadena del filtro, ya que el límite de tamaño de la solicitud POST es de 16 MB aproximadamente. Aunque el límite de tamaño de la solicitud POST es grande, las expresiones de filtro no pueden ser arbitrariamente complejas. Para más información sobre las limitaciones de complejidad del filtro, consulte Sintaxis de expresiones de OData para Azure AI Search.

Parámetros de identificador URI

Parámetro Descripción
nombre del servicio Necesario. Establezca este nombre en el nombre único definido por el usuario del servicio de búsqueda.
nombre de índice/docs Necesario. Especifica la colección de documentos de un índice con nombre. El nombre de un alias de índice también se puede usar en lugar del nombre del índice.
parámetros de consulta Los parámetros de consulta se especifican en el URI de las solicitudes GET y en el cuerpo de la solicitud para las solicitudes POST.
api-version Necesario. La versión actual es 2023-07-01-Preview. Consulte Versiones de API para obtener más versiones.

Recomendaciones de codificación url

Recuerde codificar directamente los parámetros de consulta específicos para codificar la dirección URL al llamar directamente a la API REST GET. En el caso de una operación buscar documentos , la codificación de direcciones URL podría ser necesaria para los parámetros de consulta siguientes:

  • paquetes Bower
  • $filter
  • facet
  • highlightPreTag
  • highlightPostTag

La codificación de direcciones URL solo se recomienda para parámetros individuales. Si por accidente codifica como URL la cadena de consulta completa (todo lo que hay después de ?), se interrumpirán las solicitudes.

Además, la codificación con URL solo es necesaria cuando se llama directamente a la API de REST directamente con GET. No es necesario codificar direcciones URL al usar POST o cuando se usa la biblioteca cliente de .NET de Azure AI Search, que controla la codificación por usted.

Encabezados de solicitud

En la siguiente tabla se describen los encabezados de solicitud obligatorios y opcionales.

Campos Descripción
Content-Type Necesario. Establezca este valor en "application/json"
api-key Opcional si usa roles de Azure y se proporciona un token de portador en la solicitud; de lo contrario, se requiere una clave. Una clave de API es una cadena única generada por el sistema que autentica la solicitud en el servicio de búsqueda. Las solicitudes de consulta en la colección de documentos pueden especificar una clave de administrador o una clave de consulta como clave de API. La clave de consulta se usa para las operaciones de solo lectura en la colección de documentos. Consulte Conexión a Azure AI Search mediante la autenticación de claves para más información.

Cuerpo de la solicitud

Para GET: ninguno.

Para POST:

{  
     "answers": "none" (default) | "extractive", 
     "count": true | false (default),
     "captions": "none" (default) | "extractive",
     "facets": [ "facet_expression_1", "facet_expression_2", ... ],  
     "featuresMode" : "disabled" (default) | "enabled",
     "filter": "odata_filter_expression",  
     "highlight": "highlight_field_1, highlight_field_2, ...",  
     "highlightPreTag": "pre_tag",  
     "highlightPostTag": "post_tag",  
     "minimumCoverage": # (% of index that must be covered to declare query successful; default 100),  
     "orderby": "orderby_expression",
     "queryLanguage": "en-us" (default) | (a supported language code), 
     "queryType": "simple" (default) | "full" | "semantic",
     "scoringParameters": [ "scoring_parameter_1", "scoring_parameter_2", ... ],  
     "scoringProfile": "scoring_profile_name",  
     "scoringStatistics" : "local" (default) | "global",
     "search": "simple_query_expression",  
     "searchFields": "field_name_1, field_name_2, ...",  
     "searchMode": "any" (default) | "all",  
     "select": "field_name_1, field_name_2, ...",  
     "semanticConfiguration": "semantic_configuration_name",
     "sessionId" : "session_id",
     "skip": # (default 0), 
     "speller": "none" (default) | "lexicon",  
     "top": #,
     "vectors": [
      {
        "value": "a vector representation of the query",
        "k": an integer (number of nearest neighbors to return as top results),
        "fields": "a comma-delimited list of vector fields to use in the query"
      }
     ]
   }  

Continuación de las respuestas de búsqueda parciales

A veces, Azure AI Search no puede devolver todos los resultados solicitados en una única respuesta de búsqueda. Una respuesta parcial puede ocurrir por diferentes motivos, como cuando la consulta devuelve demasiados documentos al no especificar $top o especificando un valor para $ top que es demasiado grande. En tales casos, Azure AI Search incluye la @odata.nextLink anotación en el cuerpo de la respuesta y también @search.nextPageParameters si era una solicitud POST. Puede usar los valores de estas anotaciones para formular otra solicitud de Search a fin de obtener la siguiente parte de la respuesta de búsqueda. Este comportamiento se denomina continuación de la solicitud de búsqueda original y las anotaciones se denominan tokens de continuación. Consulte el ejemplo de la sección Respuesta para obtener más información sobre la sintaxis de estas anotaciones y dónde aparecen en el cuerpo de la respuesta.

Las razones por las que Azure AI Search podría devolver tokens de continuación son específicos de la implementación y están sujetos a cambios. Los clientes sólidos deben estar siempre preparados para controlar los casos en que se devuelven menos documentos de lo esperado y se incluye un token de continuación para seguir recuperando documentos. Tenga en cuenta también que debe usar el mismo método HTTP como solicitud original para poder continuar. Por ejemplo, si envía una solicitud GET, las solicitudes de continuación que envíe también deben utilizar GET (y lo mismo para POST).

Nota

El propósito de @odata.nextLink y @search.nextPageParameters es proteger el servicio de las consultas que solicitan demasiados resultados, no proporcionar un mecanismo general para la paginación. Si desea paginar los resultados, use $top y $skip juntos. Por ejemplo, si desea páginas de tamaño 10, la primera solicitud debe tener $top=10 y $skip=0, la segunda solicitud debe tener $top=10 y $skip=10, la tercera solicitud debe tener $top=10 y $skip=20, etc.

Parámetros de consulta

Una consulta acepta varios parámetros en la dirección URL cuando se llama con GET y como propiedades JSON en el cuerpo de la solicitud cuando se llama con POST. La sintaxis de algunos parámetros es algo diferente entre GET y POST. Estas diferencias se indican en la tabla siguiente.

Nombre Tipo Descripción
respuestas (versión preliminar) string Opcional. Los valores válidos son "none" y "extractive". El valor predeterminado es "none". Este parámetro solo es válido si el tipo de consulta es "semántico". Cuando se establece en "extractive", la consulta formula y devuelve respuestas de pasajes clave en los documentos clasificados semánticamente más altos. El valor predeterminado es una respuesta, pero puede especificar hasta 10 agregando un recuento. Por ejemplo, "answers": "extractive|count-3" devuelve tres respuestas. Para que se devuelva una respuesta, debe haber contenido textual en el campo de destino que tenga un aspecto similar a una respuesta. Los modelos de lenguaje usados para las respuestas se entrenan para reconocer las respuestas, no generarlas. Además, la propia consulta debe tener un aspecto similar a una pregunta.
api-version string Necesario. Versión de la API REST usada para la solicitud. Para obtener una lista de las versiones admitidas, consulte Versiones de API. Para esta operación, la versión de api se especifica como un parámetro URI independientemente de si llama a Buscar documentos con GET o POST.
subtítulos (versión preliminar) string Opcional. Los valores válidos son "none" y "extractive". El valor predeterminado es "none". Este parámetro solo es válido si el tipo de consulta es "semántico". Cuando se establece en "extractive", la consulta devuelve los títulos extraídos de los pasajes clave de los documentos clasificados más altos. Cuando los títulos se establecen en 'extractive', el resaltado está habilitado de forma predeterminada y se puede configurar anexando el carácter de canalización '|' seguido de la opción 'highlight-true</false>', como 'extractive|highlight-true'.
$count boolean Opcional. Los valores válidos son "true" o "false". El valor predeterminado es "false". Cuando se llama con POST, este parámetro se denomina count en lugar de $count. Especifica si capturar el número total de resultados. Este valor es el recuento de todos los documentos que coinciden con los parámetros de búsqueda y $filter, ignorando $top y $skip. Establecer este valor en "true" puede degradar el rendimiento. El recuento es preciso si el índice es estable, pero informará en exceso de los documentos que se agreguen, actualicen o eliminen activamente. Si desea obtener solo el recuento sin ningún documento, puede usar $top=0.
facetas o facetas string Opcional. Campo por el que se va a facetar, donde el campo se atribuye como "facetable". Cuando se llama a con GET, facet es un campo (facet: field1). Cuando se llama con POST, este parámetro se denomina facets en lugar de facet y se especifica como una matriz (facets: [field1, field2, field3]). La cadena puede contener parámetros para personalizar la faceta, expresada como pares de nombre-valor separados por comas.

Los valores válidos son "count", "sort", "values", "interval" y "timeoffset".

"count" es el número máximo de términos de faceta; el valor predeterminado es 10. No hay ningún límite superior en el número de términos, pero los valores más altos degradan el rendimiento, especialmente si el campo con facetas contiene un gran número de términos únicos. Por ejemplo, "facet=category,count:5" obtiene las cinco categorías principales en los resultados de faceta. Si el parámetro count es menor que el número de términos únicos, es posible que los resultados no sean precisos. Esto es debido a la manera en que se distribuyen las consultas de facetas entre las particiones. Para obtener un recuento preciso en todas las particiones, puede establecer el recuento en cero o en un valor mayor o igual que el número de valores únicos en el campo facetable. El inconveniente es una mayor latencia.

"sort" se puede establecer en "count", "-count", "value", "-value". Use count para ordenar de forma descendente por recuento. Use -count para ordenar de forma ascendente por recuento. Use el valor para ordenar de forma ascendente por valor. Use -value para ordenar de forma descendente por valor (por ejemplo, "facet=category,count:3,sort:count" obtiene las tres categorías principales en los resultados de faceta en orden descendente por el número de documentos con cada nombre de ciudad). Si las tres categorías principales son Budget, Motel y Luxury, y Budget tiene cinco visitas, Motel tiene seis y Luxury tiene cuatro, los cubos están en el orden Motel, Budget, Luxury. Para -value, "facet=rating,sort:-value" genera depósitos para todas las clasificaciones posibles, en orden descendente por valor (por ejemplo, si las clasificaciones van de 1 a 5, los cubos se ordenan 5, 4, 3, 2, 1, independientemente del número de documentos que coincidan con cada clasificación).

"values" se puede establecer en valores numéricos delimitados por canalización o Edm.DateTimeOffset que especifican un conjunto dinámico de valores de entrada de faceta (por ejemplo, "facet=baseRate,values:10 | 20" produce tres cubos: uno para la velocidad base 0 hasta pero no incluye 10, uno para 10 hasta , pero no incluye 20, y otro para 20 y superior). Una cadena "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" genera dos cubos: uno para hoteles renovados antes de febrero de 2010 y otro para hoteles renovados el 1 de febrero de 2010 o posteriores. Los valores deben aparecer en orden secuencial y ascendente para obtener los resultados esperados.

"interval" es un intervalo entero mayor que 0 para números, o minuto, hora, día, semana, mes, trimestre, año para los valores de fecha y hora. Por ejemplo, "facet=baseRate,interval:100" genera cubos basados en intervalos de velocidad base de tamaño 100. Si las tarifas base están entre $60 y $600, habrá depósitos para 0-100, 100-200, 200-300, 300-400, 400-500 y 500-600. La cadena "facet=lastRenovationDate,interval:year" genera un cubo para cada año cuando se renovaron los hoteles.

"timeoffset" se puede establecer en ([+-]hh:mm, [+-]hhmm o [+-]hh). Si se usa, el parámetro timeoffset debe combinarse con la opción interval y solo cuando se aplica a un campo de tipo Edm.DateTimeOffset. El valor especifica la diferencia horaria UTC para explicar la configuración de los límites de tiempo. Por ejemplo: "facet=lastRenovationDate,interval:day,timeoffset:-01:00" usa el límite del día que comienza a las 01:00:00 UTC (medianoche en la zona horaria de destino).

count y sort se pueden combinar en la misma especificación de faceta, pero no se pueden combinar con el intervalo o los valores, y el intervalo y los valores no se pueden combinar juntos.

Las facetas interval en fecha y hora se calculan en función de la hora UTC si no se especifica el desplazamiento de hora. Por ejemplo: para "facet=lastRenovationDate,interval:day", el límite del día comienza a las 00:00:00 UTC.
featuresMode (versión preliminar) boolean Opcional. Los valores válidos son "enabled" y "disabled". El valor predeterminado es "disabled". Valor que especifica si los resultados deben incluir características de resultados de consulta, usadas para calcular la puntuación de relevancia de un documento en relación con la consulta, como por similitud de campo. Use "habilitado" para exponer más características de resultados de consulta: por puntuación de similitud de campo, frecuencia de términos de campo y por número de campos con tokens únicos coincidentes. Para obtener más información, consulte Similitud y puntuación.
$filter string Opcional. Una expresión de búsqueda estructurada en sintaxis OData estándar. Solo se pueden usar campos filtrables en un filtro. Cuando se llama con POST, este parámetro se denomina filter en lugar de $filter. Consulte Sintaxis de expresiones de OData para Azure AI Search para más información sobre el subconjunto de la gramática de expresiones de OData que admite Azure AI Search.
highlight string Opcional. Un conjunto de nombres de campo separados por coma usados resultados destacados. Solo se pueden usar campos que se pueden buscar para el resaltado de aciertos. De forma predeterminada, Azure AI Search devuelve hasta cinco resaltados por campo. El límite se puede configurar por campo anexando "-<max # of highlights>" después del nombre del campo. Por ejemplo, "highlight=title-3,description-10" devuelve hasta tres aciertos resaltados del campo de título y hasta 10 visitas del campo de descripción. El número máximo de resaltados debe ser un entero entre 1 y 1000 inclusive.
highlightPostTag string Opcional. Tiene como valor predeterminado "</em>". Etiqueta de cadena que se anexa al término resaltado. Debe establecerse con highlightPreTag. Los caracteres reservados en la dirección URL deben estar codificados con porcentaje (por ejemplo, %23 en vez de #).
highlightPreTag string Opcional. Tiene como valor predeterminado "</em>". Etiqueta de cadena que antepone al término resaltado. Debe establecerse con highlightPostTag. Los caracteres reservados en la dirección URL deben estar codificados con porcentaje (por ejemplo, %23 en vez de #).
minimumCoverage integer Opcional. Los valores válidos son un número comprendido entre 0 y 100, que indica el porcentaje del índice que debe estar disponible para atender la consulta antes de que se pueda notificar como correcto. El valor predeterminado es "100".

Cien por ciento de cobertura significa que todas las particiones respondieron a la solicitud (ni los problemas de mantenimiento ni las actividades de mantenimiento reducen la cobertura). En la configuración predeterminada, la cobertura total devuelve el código de estado HTTP 503.

Reducir minimumCoverage puede ser útil si se producen errores 503 y desea aumentar la probabilidad de éxito de la consulta, especialmente para los servicios configurados para una réplica. Si establece minimumCoverage y Search se realiza correctamente, devuelve HTTP 200 e incluye un @search.coverage valor en la respuesta que indica el porcentaje del índice que se incluyó en la consulta. En este escenario, no se garantiza que todos los documentos coincidentes estén presentes en los resultados de la búsqueda, pero si la disponibilidad de la búsqueda es más importante que la recuperación, la reducción de la cobertura puede ser una estrategia de mitigación viable.
$orderby string Opcional. Una lista de expresiones separadas por coma según la cual ordenar los resultados. Cuando se llama con POST, este parámetro se denomina orderby en lugar de $orderby. Cada expresión puede ser un nombre de campo o una llamada a la función geo.distance(). Cada expresión puede ir seguida de "asc" para indicar ascendente y "desc" para indicar descendente. Si hay valores NULL en el campo de ordenación, los valores NULL aparecen primero en orden ascendente y último en orden descendente. El valor predeterminado es ascendente. Los empates se resolverán por la puntuación de coincidencia de los documentos. Si no se especifica ningún $orderby, el criterio de ordenación predeterminado es descendente por puntuación de coincidencia de documento. Hay un límite de 32 cláusulas para $orderby.
queryLanguage (versión preliminar) string Opcional. Los valores válidos son un idioma admitido. El valor predeterminado es "en-us". Este parámetro debe establecerse si usa speller=lexicon o queryType=semantic. El idioma especificado en queryLanguage se usa tanto para la revisión ortográfica como para los modelos semánticos que vuelven a generar resultados y extraen una subtítulo o respuesta. Las bibliotecas que se usan para queryLanguage son independientes de otros atributos de campo basados en la configuración regional, como los analizadores de idioma que se usan para la indexación y la búsqueda de texto completo.
queryType string Opcional. Los valores válidos son "simple", "full" o "semantic" (versión preliminar). El valor predeterminado es "simple". Este valor se omite para la búsqueda vectorial, pero se aplica a la búsqueda de texto en escenarios híbridos.

"simple" interpreta las cadenas de consulta mediante la sintaxis de consulta simple que permite símbolos como +, *y "". Las consultas se evalúan en todos los campos que se pueden buscar (o campos indicados en searchFields) en cada documento de forma predeterminada.

"full" interpreta las cadenas de consulta mediante la sintaxis de consulta completa de Lucene , lo que permite búsquedas específicas de campo y ponderadas. La búsqueda de intervalos en el lenguaje de consulta lucene no se admite en favor de $filter, lo que ofrece una funcionalidad similar".

semántica" mejora la precisión de los resultados de la búsqueda mediante el cambio de las 50 coincidencias principales mediante un modelo de clasificación entrenado en el corpus de Bing para las consultas expresadas en lenguaje natural en lugar de palabras clave. Si establece el tipo de consulta en semántica, también debe establecer queryLanguage y semanticConfiguration. Opcionalmente, puede establecer respuestas si desea devolver también las tres respuestas principales si la entrada de consulta se ha formulado en lenguaje natural ("qué es ...) y, opcionalmente, puede establecer subtítulos para extraer pasajes clave de los documentos clasificados más altos.
scoringParameter string Opcional. Indica los valores de cada parámetro definido en una función de puntuación (como referencePointParameter) con el formato "name-value1,value2,..." Cuando se llama con POST, este parámetro se denomina scoringParameters en lugar de scoringParameter. Además, se especifica como una matriz JSON de cadenas donde cada cadena es un par de valores de nombre independiente.

Para los perfiles de puntuación que incluyen una función, separe la función de su lista de entrada con un - carácter. Por ejemplo, una función denominada "mylocation" sería "&scoringParameter=mylocation--122.2,44.8". El primer guión separa el nombre de la función de la lista de valores, mientras que el segundo guión forma parte del primer valor (longitud en este ejemplo).

Para los parámetros de puntuación, como para la potenciación de etiquetas que pueden contener comas, puede escapar de estos valores en la lista mediante comillas simples. Si los propios valores contienen comillas simples, puede separarlos duplicando la comilla simple. Supongamos que tiene un parámetro de aumento de etiquetas llamado "mytag" y desea aumentar los valores de etiqueta "Hello, O'Brien" y "Smith", la opción de cadena de consulta sería "&scoringParameter=mytag-'Hello, O'Brien',Smith". Las comillas solo son necesarias para los valores que contienen comas.
scoringProfile string Opcional. El nombre de un perfil de puntuación para evaluar puntuaciones de coincidencia para documentos coincidentes a fin de ordenar los resultados.
scoringStatistics string Opcional. Los valores válidos son "local" o "global". El valor predeterminado es "local". Especifique si se deben calcular las estadísticas de puntuación, como la frecuencia del documento, globalmente (en todas las particiones) para obtener una puntuación más coherente o localmente (en la partición actual) para reducir la latencia. Consulte Estadísticas de puntuación en Azure AI Search. Las estadísticas de puntuación siempre se calcularán localmente para los términos que usan la búsqueda aproximada ("~").
paquetes Bower string Opcional. Texto que se va a buscar. Este valor se omite para la búsqueda vectorial, pero se aplica a la búsqueda de texto en escenarios híbridos. En las API REST, todos los campos que se pueden buscar se buscan de forma predeterminada a menos que se especifique searchFields. En el índice, se tokeniza el texto de un campo que permite búsquedas, por lo que se pueden separar varios términos por espacio en blanco (por ejemplo: 'search=hello world'). Para encontrar un término, use * (esto puede ser útil para las consultas de filtro booleano). Omitir este parámetro tiene el mismo efecto que establecerlo en *. Para obtener información específica sobre la sintaxis de búsqueda, vea Sintaxis de consulta simple .

A veces, los resultados pueden ser sorprendentes al consultar campos que se pueden buscar. El objeto Tokenizer incluye una lógica para controlar casos comunes a texto en inglés, como apóstrofo, comas en números, etc. Por ejemplo, 'search=123,456' coincidirá con un solo término '123,456' en lugar de los términos individuales '123' y '456', ya que las comas se usan como separadores de miles para números grandes en inglés. Por este motivo, se recomienda usar espacios en blanco en lugar de signos de puntuación para separar los términos del parámetro de búsqueda.
searchMode string Opcional. Los valores válidos son "any" o "all" Defaults to "any". Especifica si alguno o todos los términos de búsqueda deben coincidir para considerar el documento como una coincidencia.
searchFields string Opcional. La lista de nombres de campo separados por coma donde buscar el texto especificado. Los campos de destino se deben marcar como buscables en el esquema de índice y deben ser de tipo Edm.String, Edm.ComplexTypeo Collection(Edm.String).
$select string Opcional. Lista de campos separados por comas que se van a incluir en el conjunto de resultados. Solo los campos marcados como recuperables se pueden incluir en esta cláusula. Si no se especifica nada o se establece en *, se incluirán en la proyección todos los campos marcados como recuperables en el esquema. Cuando se llama con POST, este parámetro se denomina select en lugar de $select.
semanticConfiguration (versión preliminar) string Opcional. Obligatorio si queryType="semantic". Nombre de la configuración semántica que enumera los campos que se deben usar para la clasificación semántica, los títulos, los resaltados y las respuestas. Para más información, consulte Creación de consultas semánticas.
sessionID string Opcional. El uso de sessionId ayuda a mejorar la coherencia de la puntuación de relevancia para los servicios de búsqueda con varias réplicas. En las configuraciones de varias réplicas, puede haber pequeñas diferencias entre las puntuaciones de relevancia de los documentos individuales para la misma consulta. Cuando se proporciona un identificador de sesión, el servicio realiza un mejor esfuerzo para enrutar una solicitud determinada a la misma réplica para esa sesión. Tenga cuidado de que reutilizar repetidamente los mismos valores de identificador de sesión puede interferir con el equilibrio de carga de las solicitudes entre réplicas y afectar negativamente al rendimiento del servicio de búsqueda. El valor usado como sessionId no puede comenzar con un carácter '_'. Si un servicio no tiene réplicas, este parámetro no tiene ningún efecto en el rendimiento o la coherencia de la puntuación.
$skip integer Opcional. El número de resultados de búsqueda que se van a omitir. Cuando se llama con POST, este parámetro se denomina skip en lugar de $skip. Este valor no puede ser mayor que 100 000. Si necesita examinar documentos en secuencia, pero no puede usar $skip debido a esta limitación, considere la posibilidad de usar $orderby en un campo que tenga valores únicos para cada documento del índice (por ejemplo, la clave de documento) y $filter con una consulta de intervalo en su lugar.
corrector ortográfico (versión preliminar) String Opcional. Los valores válidos son "none" y "léxico". El valor predeterminado es "none". Mejore la recuperación mediante la corrección ortográfica de los términos de consulta de búsqueda individuales. Puede usarlo en tipos de consulta simples, completos y semánticos. Si se usa, el parámetro speller requiere queryLanguage. Para obtener más información y ejemplos, vea Agregar revisión ortográfica a las consultas.
$top integer Opcional. El número de resultados de búsqueda que se van a recuperar. El valor predeterminado es 50. Cuando se llama con POST, este parámetro se denomina top en lugar de $top. Si especifica un valor mayor que 1000 y hay más de 1000 resultados, solo se devolverán los primeros 1000 resultados, junto con un vínculo a la página siguiente de resultados (vea "@odata.nextLink" en el ejemplo siguiente).

Azure AI Search usa la paginación del lado servidor para evitar que las consultas recuperen demasiados documentos a la vez. El tamaño de página predeterminado es 50, mientras que el tamaño máximo de página es 1000. Esto significa que, de forma predeterminada , Los documentos de búsqueda devuelven como máximo 50 resultados si no se especifica $top. Si hay más de 50 resultados, la respuesta incluye información para recuperar la página siguiente de como máximo 50 resultados (vea "@odata.nextLink" y "@search.nextPageParameters" en los ejemplos siguientes. De forma similar, si especifica un valor mayor que 1000 para $top y hay más de 1000 resultados, solo se devuelven los primeros 1000 resultados, junto con información para recuperar la página siguiente de como máximo 1000 resultados.
vectores (versión preliminar) array Opcional. El tipo de objeto de la matriz es una consulta vectorial. Parámetros de consulta para consultas vectoriales.

"value" es la representación vectorial de una consulta de búsqueda. Esta representación debe formarse externamente. Azure AI Search no crea incrustaciones.

"k" es un entero que especifica el número de vecinos más cercanos que se devuelven como visitas principales. El valor predeterminado es 50. El mínimo es 1 y el máximo es 10 000.

"fields" es un nombre de campo de lista delimitado por comas que contiene datos vectoriales. Solo se pueden incluir campos de tipo Collection(Edm.Single) en la lista "campos".

Response

Código de estado: al obtener una respuesta correcta, se visualiza 200 Correcto. Hay dos respuestas de ejemplo en este artículo, una para la búsqueda semántica y featuresMode.

Respuesta de ejemplo para la consulta semántica

En el primer ejemplo se muestra la respuesta completa para el resultado superior de la consulta semántica "cómo se forman las nubes".

  • "@search.answers" aparece cuando se especifica el parámetro answers y cuando la consulta y los campos de destino del índice contienen contenido que se puede reconocer como respuesta. Matriz @search.answers que tiene una clave, texto y resaltado. La puntuación es un indicador de la intensidad de la respuesta.

  • "value" es el cuerpo de la respuesta. Se @search.rerankerScore asigna mediante el algoritmo de clasificación semántica y se usa para clasificar los resultados (@search.score es del algoritmo de similitud BM25, que se usa al puntuar los resultados iniciales). Los títulos incluyen texto sin formato y versiones resaltadas. Este ejemplo se creó mediante OCR y aptitudes de reconocimiento de entidades. Los campos del contenido extraído y combinado se incluyen en la respuesta.

{
    "@search.answers": [
        {
            "key": "aHR0cHM6Ly9oZWlkaXN0YmxvYnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L25hc2EtZWJvb2stMS01MC9wYWdlLTQ1LnBkZg2",
            "text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case),   but not where it is descending (over the river).",
            "highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the   atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case),   but not where it is<em> descending</em> (over the river).",
            "score": 0.94639826
        }
    ],
    "value": [
        {
            "@search.score": 0.5479723,
            "@search.rerankerScore": 1.0321671911515296,
            "@search.captions": [
                {
                    "text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
                    "highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at    which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
                }
            ],
            "content": "\nA\nT\n\nM\nO\n\nS\nP\n\nH\nE\n\nR\nE\n\nE\nA\n\nR\nT\n\nH\n\n34\n\nValley Fog\nCanada\n\nFog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at  \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
            "metadata_storage_path": "aHR0cHM6Ly9oZWlkaXN0YmxvYnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L25hc2EtZWJvb2stMS01MC9wYWdlLTQxLnBkZg2",
            "people": [],
            "locations": [
                "Pacific Northwest",
                "North America",
                "Vancouver"
            ],
            "merged_content": "\nA\nT\n\nM\nO\n\nS\nP\n\nH\nE\n\nR\nE\n\nE\nA\n\nR\nT\n\nH\n\n34\n\nValley Fog\nCanada\n\nFog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at  \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
            "text": [],
            "layoutText": []
        }
    ]
}

Respuesta de ejemplo para featuresMode

En este ejemplo se muestra la salida "@search.features" de una consulta que incluye featuresMode.

  {
    "@odata.count": # (if $count=true was provided in the query),
    "@search.coverage": # (if minimumCoverage was provided in the query),
    "@search.facets": { (if faceting was specified in the query)
      "facet_field": [
        {
          "value": facet_entry_value (for non-range facets),
          "from": facet_entry_value (for range facets),
          "to": facet_entry_value (for range facets),
          "count": number_of_documents
        }
      ],
      ...
    },
    "@search.nextPageParameters": { (request body to fetch the next page of results if not all results could be returned in this response and Search was called with POST)
      "count": ... (value from request body if present),
      "facets": ... (value from request body if present),
      "featuresMode" : ... (value from request body if present),
      "filter": ... (value from request body if present),
      "highlight": ... (value from request body if present),
      "highlightPreTag": ... (value from request body if present),
      "highlightPostTag": ... (value from request body if present),
      "minimumCoverage": ... (value from request body if present),
      "orderby": ... (value from request body if present),
      "scoringParameters": ... (value from request body if present),
      "scoringProfile": ... (value from request body if present),
      "scoringStatistics": ... (value from request body if present),
      "search": ... (value from request body if present),
      "searchFields": ... (value from request body if present),
      "searchMode": ... (value from request body if present),
      "select": ... (value from request body if present),
      "sessionId" : ... (value from request body if present),
      "skip": ... (page size plus value from request body if present),
      "top": ... (value from request body if present minus page size),
    },
    "value": [
      {
        "@search.score": document_score (if a text query was provided),
        "@search.highlights": {
          field_name: [ subset of text, ... ],
          ...
        },
        "@search.features": {
          "field_name": {
            "uniqueTokenMatches": feature_score,
            "similarityScore": feature_score,
            "termFrequency": feature_score,
          },
          ...
        },
        key_field_name: document_key,
        field_name: field_value (retrievable fields or specified projection),
        ...
      },
      ...
    ],
    "@odata.nextLink": (URL to fetch the next page of results if not all results could be returned in this response; Applies to both GET and POST)
  }

Ejemplos

Puede encontrar más ejemplos en Sintaxis de expresiones de OData para Azure AI Search.

Ejemplo: búsqueda simple

Busque documentos en el índice con una sintaxis de consulta simple. Esta consulta devuelve los hoteles, en los que los campos de búsqueda contienen los términos "comodidad" y "ubicación", pero no "motel":

Get /indexes/hotels/docs?search=comfort +location –motel&searchMode=all&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "comfort +location -motel",  
      "searchMode": "all"  
    }  

Sugerencia

El uso de searchMode=all invalida el valor predeterminado de searchMode=any, lo que asegura que -motel significa "AND NOT" en lugar de "OR NOT". Sin searchMode=all, obtendrá "O NO", que expandirá en lugar de restringir los resultados de la búsqueda, lo cual puede resultar contradictorio para algunos usuarios.

Ejemplo: búsqueda completa de Lucene

Busque documentos en el índice mediante la sintaxis de consulta de Lucene (consulte Sintaxis de consulta de Lucene en Azure AI Search). Esta consulta devuelve los hoteles en los que el campo de categoría contiene el término "budget" y todos los campos de búsqueda que incluyen la expresión "recently renovated". Los documentos que contienen la expresión "recently renovated" tienen una clasificación más alta como resultado del valor de aumento del término (3)

GET /indexes/hotels/docs?search=Category:budget AND \"recently renovated\"^3&searchMode=all&api-version=2021-04-30-Preview&querytype=full`
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "Category:budget AND \"recently renovated\"^3",  
      "queryType": "full",  
      "searchMode": "all"  
}  

Ejemplo: búsqueda semántica

Invoque el modelo de clasificación semántica con respuestas, subtítulos y contenido resaltado. La respuesta de esta consulta se puede encontrar en la sección anterior.

POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
{
  "search": "how do clouds form",
  "queryType": "semantic",
  "semanticConfiguration": "my-semantic-config",
  "queryLanguage": "en-us",
  "answers": "extractive",
  "captions": "extractive",
  "count": "true"
}

Ejemplo: búsqueda de vectores

Para un índice que tiene campos de tipo Collection(Edm.Single) y una configuración de vector, puede especificar parámetros de consulta vectorial. Los parámetros de consulta vectorial incluyen los campos vectoriales que están en el ámbito de la consulta, el número "k" de visitas principales que se van a devolver y una representación vectorial de la entrada de consulta.

Agregar un parámetro "select" resulta útil si el índice incluye campos de texto. La coincidencia y la relevancia se basan en vectores, pero los campos que contienen contenido legible para personas son más útiles para alguien que lee los resultados. Como alternativa, puede escribir código que convierta los datos vectoriales en los resultados de búsqueda en texto.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version={{api-version}}
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "search": (this parameter is ignored in vector search),
    "vectors": [{
        "value": [
            -0.009154141,
            0.018708462,
            . . . 
            -0.02178128,
            -0.00086512347
        ],
        "fields": "contentVector",
        "k": 5
    }],
    "select": "title, content, category"
}

Ejemplo: orderby

Busque el índice y devuelva los resultados ordenados por fecha en orden descendente.

GET /indexes/hotels/docs?search=*&$orderby=LastRenovationDate desc&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "*",  
      "orderby": "LastRenovationDate desc"
    }  

Ejemplo: filtrar mediante una expresión de OData

Recupere documentos que coincidan con una expresión de filtro específica:

GET /indexes/hotels/docs?$filter=(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "filter": "(Rooms/BaseRate ge 60 and Rooms/BaseRate lt 300) or HotelName eq 'Fancy Stay'"  
    }  

Ejemplo: búsqueda por facetas

En una búsqueda por facetas, busque el índice y recupere facetas para categorías, clasificaciones, etiquetas, así como elementos con baseRate en intervalos específicos.

GET /indexes/hotels/docs?search=*&facet=Category&facet=Rating&facet=Tags&facet=Rooms/BaseRate,values:80|150|220&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "test",  
      "facets": [ "Category", "Rating", "Tags", "Rooms/BaseRate,values:80|150|220" ]  
    }  

Observe que la última faceta está en un subcampo. Las facetas cuentan el documento primario (Hoteles) y no los subdocumentos intermedios (Rooms), por lo que la respuesta determinará el número de hoteles que tienen habitaciones en cada cubo de precios.

Ejemplo: Restricción de una consulta por facetas

Con un filtro, reduzca el resultado de la consulta por facetas anterior después de que el usuario seleccione Clasificación 3 y categoría "Motel".

GET /indexes/hotels/docs?search=*&facet=tags&facet=Rooms/BaseRate,values:80|150|220&$filter=Rating eq 3 and Category eq 'Motel'&api-version=2021-04-30-Preview  
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview 
    {  
      "search": "test",  
      "facets": [ "tags", "Rooms/BaseRate,values:80|150|220" ],  
      "filter": "Rating eq 3 and Category eq 'Motel'"  
    }  

Ejemplo: búsqueda por facetas con límites en cada categoría

En una búsqueda con facetas, establezca un límite superior en términos únicos devueltos en una consulta. El valor predeterminado es 10, pero puede aumentarlo o disminuirlo con el parámetro count en el atributo de faceta. Este ejemplo devuelve facetas por ciudad, limitadas a 5.

GET /indexes/hotels/docs?search=*&facet=Address/City,count:5&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "test",  
      "facets": [ "Address/City,count:5" ]  
    }  

Ejemplo: búsqueda en el campo

Buscar el índice en campos específicos (por ejemplo, un campo de idioma)

GET /indexes/hotels/docs?search=hôtel&searchFields=Description_fr&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "hôtel",  
      "searchFields": "Description_fr"
    }  

Busque el índice en varios campos. Por ejemplo, puede almacenar y consultar los campos de búsqueda en varios idiomas, todo ello en el mismo índice. Si las descripciones en inglés y francés coexisten en el mismo documento, puede devolver cualquiera o todo en los resultados de la consulta:

GET /indexes/hotels/docs?search=hotel&searchFields=Description,Description_fr&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "hotel",  
      "searchFields": "Description, Description_fr"
    }  

Solo puede consultar un índice cada vez. No cree varios índices para cada idioma a menos que planee consultar uno a uno.

Ejemplo: paginación de resultados

Obtener la primera página de elementos (el tamaño de página es 10):

GET /indexes/hotels/docs?search=*&$skip=0&$top=10&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "*",  
      "skip": 0,  
      "top": 10  
    }  

Obtener la segunda página de elementos (el tamaño de página es 10):

GET /indexes/hotels/docs?search=*&$skip=10&$top=10&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "*",  
      "skip": 10,  
      "top": 10  
    }  

Ejemplo: limitar campos en un conjunto de resultados

Recupere un conjunto específico de campos:

GET /indexes/hotels/docs?search=*&$select=HotelName,Description&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "*",  
      "select": "HotelName, Description"
    }  

Ejemplo: resaltado de aciertos en los resultados

Busque en el índice y devuelva fragmentos con resultados destacados:

GET /indexes/hotels/docs?search=something&highlight=Description&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "something",  
      "highlight": "Description"  
    }  

Ejemplo: Búsqueda geoespacial

Busque en el índice y devuelva documentos ordenados desde los más cercanos a los más lejanos respecto de una ubicación de referencia:

GET /indexes/hotels/docs?search=something&$orderby=geo.distance(Location, geography'POINT(-122.12315 47.88121)')&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "something",  
      "orderby": "geo.distance(Location, geography'POINT(-122.12315 47.88121)')"
    }  

Ejemplo: "buscar por mí" (aumentar la relevancia de las ubicaciones cercanas)

Busque el índice suponiendo que hay un perfil de puntuación denominado "geo" con dos funciones de puntuación de distancia, una que define un parámetro denominado "currentLocation" y otro que define un parámetro denominado "lastLocation". En el ejemplo siguiente, "currentLocation" tiene un delimitador de un solo guión (-). Va seguido de coordenadas de longitud y latitud, donde la longitud es un valor negativo.

GET /indexes/hotels/docs?search=something&scoringProfile=geo&scoringParameter=currentLocation--122.123,44.77233&scoringParameter=lastLocation--121.499,44.2113&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "something",  
      "scoringProfile": "geo",  
      "scoringParameters": [ "currentLocation--122.123,44.77233", "lastLocation--121.499,44.2113" ]  
    }  

Ejemplo: consulta sobre el índice completo en lugar de particiones

Busque documentos en el índice a la vez que favorece la puntuación coherente en una latencia inferior. Esta consulta calcula las frecuencias del documento en todo el índice y hace un mejor esfuerzo para seleccionar como destino la misma réplica para todas las consultas dentro de la misma "sesión", lo que ayuda a generar una clasificación estable y reproducible.

GET /indexes/hotels/docs?search=hotel&sessionId=mySessionId&scoringStatistics=global&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "hotel",  
      "sessionId": "mySessionId",
      "scoringStatistics" :"global"
    }  

Ejemplo: estadísticas de puntuación (featuresMode)

Busque documentos en el índice y devuelva una lista de características de recuperación de información para cada resultado que describa la puntuación entre el documento coincidente y la consulta. La consulta también calcula las frecuencias del documento en todo el índice para generar una puntuación más coherente.

GET /indexes/hotels/docs?search=hotel&featuresMode=enabled&scoringStatistics=global&api-version=2021-04-30-Preview
POST /indexes/hotels/docs/search?api-version=2021-04-30-Preview
    {  
      "search": "hotel",  
      "featuresMode": "enabled",
      "scoringStatistics" :"global"
    }  

Un ejemplo de una respuesta que incluye search.features tiene un aspecto similar al siguiente:

    "@search.score": 0.91875637,
    "@search.features": {
        "Description": {
            "uniqueTokenMatches": 1,
            "similarityScore": 0.2917966,
            "termFrequency": 2
        },
        "HotelName": {
            "uniqueTokenMatches": 1,
            "similarityScore": 0.44458693,
            "termFrequency": 1
        }
      . . .

Definiciones

En esta sección se proporcionan detalles sobre los parámetros demasiado complejos para cubrir en la tabla principal.

Vínculo Descripción
queryLanguage Lista de los idiomas admitidos para la búsqueda ortográfica y semántica.

queryLanguage

Los valores válidos para el parámetro queryLanguage se proporcionan en la tabla siguiente, en la columna "queryLanguage" y no distinguen mayúsculas de minúsculas. El valor predeterminado para el parámetro en su conjunto es "en-us". Dentro de cada idioma, hay una variante predeterminada para cada código de idioma de dos caracteres. Por ejemplo, si especifica "es", se usa "es-us" de forma predeterminada. El parámetro queryLanguage es necesario para una solicitud de consulta que incluya "queryType=semantic" o "speller=lexicon". Solo hay un valor queryLanguage para toda la solicitud y ese valor se usará para la clasificación semántica, los títulos, las respuestas y el corrector ortográfico (no hay invalidación para las características individuales).

En este momento, la compatibilidad con idiomas varía según la característica. Solo se admiten inglés, español, francés y alemán para el conjunto completo de características, pero tenga en cuenta que la revisión ortográfica implementa menos variantes.

Si especifica un código de idioma que no es compatible con una característica determinada, como EN-GB con ortografía, el servicio devuelve HTTP 400.

Para obtener más información sobre el uso de cada característica, vea Habilitar clasificación semántica y subtítulos, Devolver una respuesta semántica y Agregar revisión ortográfica a las consultas.

La designación "(preview)" indica que las pruebas de validación en todas las características (clasificación semántica, subtítulos, respuestas y revisión ortográfica) están en curso o pendientes. Se recomienda el uso de todas las variantes de idioma de la tabla siguiente, pero se recomienda realizar más pruebas de idiomas en versión preliminar para asegurarse de que los resultados son válidos para el contenido. Los idiomas con una marca de verificación y ninguna designación de vista previa se han validado mediante conjuntos de datos equivalentes, con una ganancia medible en relevancia.

Lenguaje queryLanguage Clasificador semántico y subtítulos Respuesta semántica Speller
Inglés [en] en, en-US (valor predeterminado), en-GB, en-IN, en-CA, en-AU ✔️ ✔️ ✔️ (en, en-US)
Francés [fr] fr, fr-FR (valor predeterminado), fr-CA ✔️ ✔️ ✔️ (fr, fr-FR)
Alemán [de] de, de-DE (valor predeterminado) ✔️ ✔️ ✔️ (de, de-DE)
Español [es] es, es-ES (valor predeterminado), es-MX ✔️ ✔️ ✔️ (es, es-ES)
Italiano [it] it, it-IT (valor predeterminado) ✔️ ✔️
Japonés [ja] ja, ja-JP (valor predeterminado) ✔️ ✔️ (versión preliminar)
Chino [zh] zh, zh-CN (valor predeterminado), zh-TW ✔️ ✔️ (versión preliminar)
Portugués [pt] pt, pt-BR (valor predeterminado), pt-PT ✔️ ✔️ (versión preliminar)
Neerlandés [nl] nl, nl-BE, nl-NL (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar) ✔️ (nl, nl-NL)
Árabe [ar] ar, ar-SA (valor predeterminado), ar-EG, ar-MA, ar-KW, ar-JO ✔️ (versión preliminar) ✔️ (versión preliminar)
Armenio hy-AM (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Bengalí bn-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Vasco eu-ES (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Búlgaro [bg] bg, bg-BG (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Catalán [ca] ca, ca-ES (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Croata [hr] hr, hr-HR (valor predeterminado), hr-BA ✔️ (versión preliminar) ✔️ (versión preliminar)
Checo [cs] cs, cs-CZ (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Danés [da] da, da-DK (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Estonio [et] et, et-EE (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Finlandés [fi] fi, fi-FI (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Gallego gl-ES (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Griego [el] el, el-GR (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Gujarati gu-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Hebreo he-IL (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Hindi [hi] hi, hi-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Húngaro [hu] hu, hu-HU (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Islandés [is] is, is-IS (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Indonesia [id] id, id-ID (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Irlandés ga-IE (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Canarés kn-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Coreano [ko] ko, ko-KR (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Letón [lv] lv, lv-LV (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Lituano [lt] lt, lt-LT (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Malayalam ml-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Malasia [ms] ms, ms-MY (valor predeterminado), ms-BN ✔️ (versión preliminar) ✔️ (versión preliminar)
Maratí mr-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Noruego [no] no, no-NO (valor predeterminado), nb-NO ✔️ (versión preliminar) ✔️ (versión preliminar)
Persa fa-AE (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Polaco [pl] pl, pl-PL (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Punjabi pa-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Rumano [ro] ro, ro-RO (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Ruso [ru] ru, ru-RU (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Serbio [sr] (cirílico o latino) sr, sr-BA (valor predeterminado), sr-ME, sr-RS ✔️ (versión preliminar) ✔️ (versión preliminar)
Eslovaco [sk] sk, sk-SK (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Eslovenia [sl] sl, sl-SL (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Tamil [ta] ta, ta-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Sueco [sv] sv, sv-SE (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Telugu te-IN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Tailandés [th] th, th-TH (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Turco [tr] tr, tr-TR (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Ucraniano [uk] uk, uk-UA (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Urdu ur-PK (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)
Vietnamita [va] va, vi-VN (valor predeterminado) ✔️ (versión preliminar) ✔️ (versión preliminar)

Consulte también