Documentos de Pesquisa (API REST de Pré-visualização)

Aplica-se a: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Importante

A versão 2023-07-01-Preview adiciona:

  • Parâmetro de consulta "vetores" que especifica quaisquer pedidos de consulta de vetor. Cada objeto deve conter a representação de vetor da consulta, o número "k" dos vizinhos mais próximos a devolver nos resultados e os campos de vetor a utilizar durante a execução da consulta.

04-2021-30-Preview adiciona:

  • "semmanticConfiguration" suporta o âmbito da classificação semântica para campos específicos.
  • "legendas" devolve expressões extraídas de passagens-chave nos documentos mais bem classificados semanticamente.

2020-06-30-Preview adiciona:

  • "queryType=semmantic" suporta a reconserção semântica e as respostas.
  • "searchFields" numa consulta semântica estabelece a ordem de prioridade dos campos utilizados para formular legendas e respostas. Esta abordagem foi substituída pela "semmanticConfiguration" em 2021-04-30-Preview e é agora obsoleta.
  • O "soletrador" ativa a correção ortográfica na entrada da consulta.
  • "queryLanguage" é necessário para "queryType=semantic" e "speller".
  • "featuresMode" descompacta uma pontuação de pesquisa, comunicando a frequência de termos por campo, a pontuação de semelhança por campo e o número por campo de correspondências exclusivas.

Um pedido de consulta destina-se à coleção de documentos de um único índice num serviço de pesquisa. Inclui parâmetros que definem os critérios de correspondência e os parâmetros que formam a resposta. Também pode utilizar um alias de índice para direcionar um índice específico em vez de utilizar o próprio nome do índice.

Pode utilizar GET ou POST para a maioria das consultas, mas tem de utilizar POST para pesquisa de vetores porque os parâmetros de consulta de vetor não se enquadram num URI. Os parâmetros de consulta são especificados na cadeia de consulta para pedidos GET e no corpo do pedido para pedidos POST.

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

Se estiver a utilizar POST, adicione a ação "search" como um 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]  

Quando chamado com GET, o comprimento do URL do pedido não pode exceder os 8 KB. Este comprimento é suficiente para a maioria das aplicações. No entanto, algumas aplicações produzem consultas grandes, especificamente quando são utilizadas expressões de filtro OData. Para estas aplicações, HTTP POST é uma escolha melhor porque permite filtros maiores do que GET.

Com POST, o número de cláusulas num filtro é o fator limitativo, não o tamanho da cadeia de filtro não processado, uma vez que o limite de tamanho do pedido para POST é de aproximadamente 16 MB. Embora o limite de tamanho do pedido POST seja grande, as expressões de filtro não podem ser arbitrariamente complexas. Para obter mais informações sobre as limitações de complexidade do filtro, veja Sintaxe de Expressão OData para a Pesquisa de IA do Azure.

Parâmetros do URI

Parâmetro Description
nome do serviço Obrigatório. Defina este nome como o nome exclusivo definido pelo utilizador do seu serviço de pesquisa.
nome/documentos do índice Obrigatório. Especifica a coleção de documentos de um índice com nome. O nome de um alias de índice também pode ser utilizado em vez do nome do índice.
parâmetros de consulta Os parâmetros de consulta são especificados no URI para pedidos GET e no corpo do pedido para pedidos POST.
api-version Obrigatório. A versão atual é 2023-07-01-Preview. Veja Versões da API para obter mais versões.

Recomendações de codificação de URL

Lembre-se de codificar parâmetros de consulta específicos de URL ao chamar diretamente a API REST GET. Para uma operação Pesquisar Documentos , a codificação de URL poderá ser necessária para os seguintes parâmetros de consulta:

  • pesquisar
  • $filter
  • faceta
  • highlightPreTag
  • highlightPostTag

A codificação de URL só é recomendada para parâmetros individuais. Se codificar inadvertidamente a cadeia de consulta inteira (tudo depois do ), os ?pedidos serão interrompidos.

Além disso, a codificação de URL só é necessária ao chamar a API REST diretamente com GET. Não é necessária codificação de URL ao utilizar POST ou ao utilizar a biblioteca de cliente .NET do Azure AI Search, que processa a codificação por si.

Cabeçalhos de Pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Campos Description
Content-Type Obrigatório. Defina este valor como "application/json"
api-key Opcional se estiver a utilizar funções do Azure e for fornecido um token de portador no pedido, caso contrário, é necessária uma chave. Uma chave de API é uma cadeia exclusiva gerada pelo sistema que autentica o pedido no seu serviço de pesquisa. Os pedidos de consulta na coleção de documentos podem especificar uma chave de administrador ou uma chave de consulta como a chave de API. A chave de consulta é utilizada para operações só de leitura na coleção de documentos. Veja Connect to Azure AI Search using key authentication (Ligar à Pesquisa de IA do Azure com a autenticação de chaves ) para obter detalhes.

Corpo do Pedido

Para GET: Nenhum.

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

Continuação de Respostas de Pesquisa Parciais

Por vezes, o Azure AI Search não consegue devolver todos os resultados pedidos numa única resposta de Pesquisa. Uma resposta parcial pode ocorrer por diferentes razões, como quando a consulta devolve demasiados documentos ao não especificar $top ou ao especificar um valor para $ top demasiado grande. Nestes casos, a Pesquisa de IA do Azure inclui a @odata.nextLink anotação no corpo da resposta e também @search.nextPageParameters se foi um pedido POST. Pode utilizar os valores destas anotações para formular outro pedido de Pesquisa para obter a parte seguinte da resposta de pesquisa. Este comportamento é denominado continuação do pedido de Pesquisa original e as anotações são denominadas tokens de continuação. Veja o exemplo na secção Resposta para obter detalhes sobre a sintaxe destas anotações e onde aparecem no corpo da resposta.

Os motivos pelos quais o Azure AI Search pode devolver tokens de continuação são específicos da implementação e estão sujeitos a alterações. Os clientes robustos devem estar sempre prontos para processar casos em que são devolvidos menos documentos do que o esperado e um token de continuação é incluído para continuar a obter documentos. Tenha também em atenção que tem de utilizar o mesmo método HTTP que o pedido original para continuar. Por exemplo, se enviou um pedido GET, todos os pedidos de continuação que enviar também têm de utilizar GET (e igualmente para POST).

Nota

O objetivo de @odata.nextLink e @search.nextPageParameters é proteger o serviço de consultas que pedem demasiados resultados, não para fornecer um mecanismo geral para paginação. Se quiser analisar os resultados, utilize $top e $skip em conjunto. Por exemplo, se quiser páginas de tamanho 10, o primeiro pedido deve ter $top=10 e $skip=0, o segundo pedido deve ter $top=10 e $skip=10, o terceiro pedido deve ter $top=10 e $skip=20, etc.

Parâmetros de Consulta

Uma consulta aceita vários parâmetros no URL quando é chamada com GET e como propriedades JSON no corpo do pedido quando chamada com POST. A sintaxe de alguns parâmetros é ligeiramente diferente entre GET e POST. Estas diferenças são registadas na tabela seguinte.

Nome Tipo Description
respostas (pré-visualização) string Opcional. Os valores válidos são "none" e "extractive". A predefinição é "none". Este parâmetro só é válido se o tipo de consulta for "semântico". Quando definida como "extrativa", a consulta formula e devolve respostas de passagens-chave nos documentos mais bem classificados semanticamente. A predefinição é uma resposta, mas pode especificar até 10 ao adicionar uma contagem. Por exemplo, "answers": "extractive|count-3" devolve três respostas. Para que seja devolvida uma resposta, tem de existir conteúdo literal no campo de destino que se pareça com uma resposta. Os modelos de linguagem utilizados para respostas são preparados para reconhecer respostas e não para as gerar. Além disso, a própria consulta tem de ter um aspeto semelhante a uma pergunta.
api-version string Obrigatório. Versão da API REST utilizada para o pedido. Para obter uma lista das versões suportadas, veja Versões da API. Para esta operação, a versão da api é especificada como um parâmetro URI, independentemente de chamar Documentos de Pesquisa com GET ou POST.
legendas (pré-visualização) string Opcional. Os valores válidos são "none" e "extractive". A predefinição é "none". Este parâmetro só é válido se o tipo de consulta for "semântico". Quando definida como "extrativa", a consulta devolve legendas extraídas de passagens-chave nos documentos mais bem classificados. Quando as legendas estão definidas como "extrativas", o realce está ativado por predefinição e pode ser configurado ao acrescentar o caráter de pipe '|' seguido da opção 'highlight-true</false>', como 'extractive|highlight-true'.
$count boolean Opcional. Os valores válidos são "true" ou "false". A predefinição é "false". Quando chamado com POST, este parâmetro tem o nome count em vez de $count. Especifica se pretende obter a contagem total de resultados. Este valor é a contagem de todos os documentos que correspondem aos parâmetros de pesquisa e $filter, ignorando $top e $skip. Definir este valor como "verdadeiro" pode degradar o desempenho. A contagem é precisa se o índice for estável, mas irá sub ou sobre-reportar quaisquer documentos que sejam adicionados, atualizados ou eliminados ativamente. Se quiser obter apenas a contagem sem documentos, pode utilizar $top=0.
facetas ou facetas string Opcional. Um campo pelo qual a faceta é atribuída, em que o campo é atribuído como "facetável". Quando chamado com GET, facet é um campo (facet: field1). Quando chamado com POST, este parâmetro é nomeado facets em vez de facet e é especificado como uma matriz (facets: [field1, field2, field3]). A cadeia pode conter parâmetros para personalizar a faceta, expressa como pares nome-valor separados por vírgulas.

Os valores válidos são "count", "sort", "values", "interval" e "timeoffset".

"count" é o número máximo de termos de facetas; predefinição é 10. Não existe um limite superior no número de termos, mas os valores mais elevados degradam o desempenho, especialmente se o campo facetado contiver um grande número de termos exclusivos. Por exemplo, "facet=category,count:5" obtém as cinco principais categorias nos resultados de facetas. Se o parâmetro de contagem for inferior ao número de termos exclusivos, os resultados poderão não ser exatos. Isto deve-se à forma como as consultas de faceta são distribuídas entre partições horizontais. Para obter uma contagem precisa em todas as partições horizontais, pode definir a contagem como zero ou para um valor maior ou igual ao número de valores exclusivos no campo de tabela facial. A desvantagem é o aumento da latência.

"sort" pode ser definido como "count", "-count", "value", "-value". Utilize a contagem para ordenar por contagem. Utilize -count para ordenar ascendente por contagem. Utilize o valor para ordenar ascendente por valor. Utilize -value para ordenar por valor descendente (por exemplo, "facet=category,count:3,sort:count" obtém as três principais categorias em facetas resulta em ordem descendente pelo número de documentos com cada nome de cidade). Se as três principais categorias são Orçamento, Motel e Luxo, e Orçamento tem cinco sucessos, Motel tem seis, e Luxury tem quatro, então os baldes estão na ordem Motel, Orçamento, Luxo. Para -value, "facet=rating,sort:-value" produz registos para todas as classificações possíveis, por ordem descendente por valor (por exemplo, se as classificações forem de 1 a 5, os registos são ordenados 5, 4, 3, 2, 1, independentemente do número de documentos que correspondam a cada classificação).

Os "valores" podem ser definidos para valores numéricos delimitados por pipe ou Edm.DateTimeOffset, especificando um conjunto dinâmico de valores de entrada de facetas (por exemplo, "facet=baseRate,values:10 | 20" produz três registos: um para a taxa base 0 até, mas não incluindo 10, um para 10 até, mas não incluindo 20, e um para 20 e mais). Uma cadeia "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" produz dois baldes: um para hotéis renovados antes de fevereiro de 2010 e outro para hotéis renovados a 1 de fevereiro de 2010 ou posterior. Os valores têm de ser listados por ordem sequencial e ascendente para obter os resultados esperados.

"interval" é um intervalo inteiro superior a 0 para números, ou minuto, hora, dia, semana, mês, trimestre, ano para valores de data/hora. Por exemplo, "facet=baseRate,interval:100" produz registos com base em intervalos de taxa base de tamanho 100. Se as tarifas base estiverem entre $60 e $600, haverá registos para 0-100, 100-200, 200-300, 300-400, 400-500 e 500-600. A cadeia "facet=lastRenovationDate,interval:year" produz um registo para cada ano em que os hotéis foram renovados.

"timeoffset" pode ser definido como ([+-]hh:mm, [+-]hhmm ou [+-]hh). Se utilizado, o parâmetro timeoffset tem de ser combinado com a opção de intervalo e apenas quando aplicado a um campo do tipo Edm.DateTimeOffset. O valor especifica o desvio de tempo UTC para contabilizar na definição de limites de tempo. Por exemplo: "facet=lastRenovationDate,interval:day,timeoffset:-01:00" utiliza o limite de dia que começa às 01:00:00 UTC (meia-noite no fuso horário de destino).

A contagem e ordenação podem ser combinadas com a mesma especificação de facetas, mas não podem ser combinadas com intervalos ou valores e o intervalo e os valores não podem ser combinados em conjunto.

As facetas de intervalo na data/hora são calculadas com base na hora UTC se o desvio de tempo não for especificado. Por exemplo: para "facet=lastRenovationDate,interval:day", o limite do dia começa às 00:00:00 UTC.
featuresMode (pré-visualização) boolean Opcional. Os valores válidos são "ativados" e "desativados". A predefinição é "desativado". Um valor que especifica se os resultados devem incluir funcionalidades de resultados de consulta, utilizadas para calcular a classificação de relevância de um documento em relação à consulta, como por semelhança de campo. Utilize "ativado" para expor mais funcionalidades de resultados de consulta: por pontuação de semelhança de campo, por frequência de termos de campo e por número de campo de tokens exclusivos correspondentes. Para obter mais informações, veja Similaridade e classificação.
$filter string Opcional. Uma expressão de pesquisa estruturada na sintaxe OData padrão. Apenas os campos filtráveis podem ser utilizados num filtro. Quando chamado com POST, este parâmetro tem o nome filter em vez de $filter. Veja Sintaxe da Expressão OData para a Pesquisa de IA do Azure para obter detalhes sobre o subconjunto da gramática da expressão OData suportada pelo Azure AI Search.
realçar string Opcional. Um conjunto de nomes de campos separados por vírgulas utilizado para os destaques de acesso. Apenas os campos pesquisáveis podem ser utilizados para o realce de resultados. Por predefinição, a Pesquisa de IA do Azure devolve até cinco destaques por campo. O limite é configurável por campo ao acrescentar "-<max # de destaques>" seguindo o nome do campo. Por exemplo, "highlight=title-3,description-10" devolve até três acessos realçados do campo de título e até 10 acessos do campo de descrição. O número máximo de destaques tem de ser um número inteiro entre 1 e 1000 inclusive.
highlightPostTag string Opcional. A predefinição é "</em>". Uma etiqueta de cadeia que acrescenta ao termo realçado. Tem de ser definido com highlightPreTag. Os carateres reservados no URL têm de estar codificados por percentagem (por exemplo, %23 em vez de #).
highlightPreTag string Opcional. Predefinições para "</em>". Uma etiqueta de cadeia que se prepara para o termo realçado. Tem de ser definido com highlightPostTag. Os carateres reservados no URL têm de estar codificados por percentagem (por exemplo, %23 em vez de #).
minimumCoverage número inteiro Opcional. Os valores válidos são um número entre 0 e 100, indicando a percentagem do índice que tem de estar disponível para servir a consulta antes de poder ser reportado como um êxito. A predefinição é "100".

100% de cobertura significa que todas as partições horizontais responderam ao pedido (nem os problemas de saúde do serviço nem as atividades de manutenção reduziram a cobertura). Na predefinição, menos do que a cobertura completa devolve o código de estado HTTP 503.

A redução do mínimoCoverage pode ser útil se estiverem a ocorrer erros 503 e quiser aumentar a probabilidade de êxito da consulta, especialmente para serviços configurados para uma réplica. Se definir minimumCoverage e Search com êxito, devolve HTTP 200 e inclui um @search.coverage valor na resposta que indica a percentagem do índice incluído na consulta. Neste cenário, nem todos os documentos correspondentes estão presentes nos resultados da pesquisa, mas se a disponibilidade da pesquisa for mais importante do que a recolha, a redução da cobertura pode ser uma estratégia de mitigação viável.
$orderby string Opcional. Uma lista de expressões separadas por vírgulas para ordenar os resultados. Quando chamado com POST, este parâmetro é denominado orderby em vez de $orderby. Cada expressão pode ser um nome de campo ou uma chamada para a função geo.distance(). Cada expressão pode ser seguida por "asc" para indicar ascendente e "desc" para indicar descendente. Se existirem valores nulos no campo de ordenação, os valores nulos aparecem primeiro por ordem ascendente e o último por ordem descendente. A predefinição é ordem ascendente. Os laços serão quebrados pelas pontuações de correspondência de documentos. Se não for especificado nenhum $orderby, a sequência de ordenação predefinida é descendente pela classificação de correspondência do documento. Existe um limite de 32 cláusulas para $orderby.
queryLanguage (pré-visualização) string Opcional. Os valores válidos são um idioma suportado. A predefinição é "en-us". Este parâmetro tem de ser definido se utilizar speller=lexicon ou queryType=semântico. O idioma especificado em queryLanguage é utilizado para a verificação ortográfica e para os modelos semânticos que reranquem resultados e extraem uma legenda ou resposta. As bibliotecas utilizadas para a consultaLanguage são independentes de outros atributos de campo baseados na região, como analisadores de idiomas utilizados para indexação e pesquisa de texto completo.
queryType string Opcional. Os valores válidos são "simples", "completo" ou "semântico" (pré-visualização). A predefinição é "simples". Este valor é ignorado para pesquisa de vetores, mas aplica-se à pesquisa de texto em cenários híbridos.

"simples" interpreta cadeias de consulta com a sintaxe de consulta simples que permite símbolos como +, *e "". As consultas são avaliadas em todos os campos pesquisáveis (ou campos indicados em searchFields) em cada documento por predefinição.

"full" interpreta cadeias de consulta com a sintaxe de consulta Lucene completa que permite pesquisas específicas e ponderadas do campo. A pesquisa de intervalos na linguagem de consulta Lucene não é suportada a favor de $filter, que oferece funcionalidades semelhantes."

semântico" melhora a precisão dos resultados da pesquisa ao encaminhar as 50 principais correspondências com um modelo de classificação preparado no corpus do Bing para consultas expressas em linguagem natural em oposição às palavras-chave. Se definir o tipo de consulta como semântico, também tem de definir queryLanguage e semmanticConfiguration. Opcionalmente, pode definir respostas se também quiser devolver as três principais respostas se a entrada da consulta tiver sido formulada em linguagem natural ("o que é um ...) e, opcionalmente, pode definir legendas para extrair passagens de chaves dos documentos mais bem classificados.
scoreParameter string Opcional. Indica os valores para cada parâmetro definido numa função de classificação (como referencePointParameter) com o formato "name-value1,value2,..." Quando chamado com POST, este parâmetro é denominado scoreParameters em vez de scoreParameter. Além disso, especifique-a como uma matriz JSON de cadeias em que cada cadeia é um par de nomes-valores separado.

Para perfis de classificação que incluem uma função, separe a função da lista de entrada com um - caráter. Por exemplo, uma função chamada "mylocation" seria "&scoreParameter=mylocation--122.2,44.8". O primeiro traço separa o nome da função da lista de valores, enquanto o segundo traço faz parte do primeiro valor (longitude neste exemplo).

Para parâmetros de classificação, como o aumento de etiquetas que podem conter vírgulas, pode escapar a esses valores na lista com aspas individuais. Se os próprios valores contiverem plicas, pode escapar-lhes duplicando. Suponha que tem um parâmetro de aumento de etiquetas chamado "mytag" e quer aumentar os valores da etiqueta "Hello, O'Brien" e "Smith", a opção de cadeia de consulta seria então "&scoreParameter=mytag-'Hello, O'Brien',Smith". As aspas só são necessárias para valores que contenham vírgulas.
scoreProfile string Opcional. O nome de um perfil de classificação para avaliar pontuações de correspondência para documentos correspondentes para ordenar os resultados.
scoreStatistics string Opcional. Os valores válidos são "local" ou "global". A predefinição é "local". Especifique se pretende calcular estatísticas de classificação, como a frequência do documento, globalmente (em todas as partições horizontais) para uma classificação mais consistente ou localmente (na partição horizontal atual) para uma menor latência. Veja Estatísticas de Classificação na Pesquisa de IA do Azure. As estatísticas de classificação serão sempre calculadas localmente para termos que utilizam a pesquisa difusa ('~').
pesquisar string Opcional. O texto a procurar. Este valor é ignorado para pesquisa de vetores, mas aplica-se à pesquisa de texto em cenários híbridos. Nas APIs REST, todos os campos pesquisáveis são pesquisados por predefinição, a menos que searchFields seja especificado. No índice, o texto num campo pesquisável é token, pelo que vários termos podem ser separados por espaço em branco (por exemplo: "search=hello world"). Para corresponder a qualquer termo, utilize * (isto pode ser útil para consultas de filtro booleano). Omitir este parâmetro tem o mesmo efeito que defini-lo como *. Veja Sintaxe de consulta simples para obter detalhes sobre a sintaxe de pesquisa.

Por vezes, os resultados podem ser surpreendentes ao consultar campos pesquisáveis. O tokenizer inclui lógica para processar casos comuns ao texto em inglês, como apóstrofos, vírgulas em números, etc. Por exemplo, "search=123,456" corresponderá a um único termo "123.456" em vez dos termos individuais "123" e "456", uma vez que as vírgulas são utilizadas como separadores de milhares para números grandes em inglês. Por este motivo, recomendamos a utilização de espaço em branco em vez de pontuação para separar termos no parâmetro de pesquisa.
searchMode string Opcional. Os valores válidos são "qualquer" ou "todos" Predefinições para "qualquer". Especifica se algum ou todos os termos de pesquisa têm de ser correspondidos para contar o documento como uma correspondência.
campos de pesquisa string Opcional. A lista de nomes de campos separados por vírgulas para procurar o texto especificado. Os campos de destino têm de ser marcados como pesquisáveis no esquema de índice e têm de ser do tipo Edm.String, Edm.ComplexTypeou Collection(Edm.String).
$select string Opcional. Uma lista de campos separados por vírgulas a incluir no conjunto de resultados. Apenas os campos marcados como recuperáveis podem ser incluídos nesta cláusula. Se não for especificado ou definido como *, todos os campos marcados como recuperáveis no esquema serão incluídos na projeção. Quando chamado com POST, este parâmetro tem o nome select em vez de $select.
semanticConfiguration (pré-visualização) string Opcional. Necessário se queryType="semântica". O nome da configuração semântica que lista os campos que devem ser utilizados para classificação semântica, legendas, destaques e respostas. Para obter mais informações, consulte Criar uma consulta semântica.
sessionId string Opcional. A utilização de sessionId ajuda a melhorar a consistência da classificação de relevância dos serviços de pesquisa com várias réplicas. Nas configurações de várias réplicas, podem existir ligeiras diferenças entre classificações de relevância de documentos individuais para a mesma consulta. Quando é fornecido um ID de sessão, o serviço faz o melhor esforço para encaminhar um determinado pedido para a mesma réplica para essa sessão. Tenha em atenção que reutilizar repetidamente os mesmos valores de ID de sessão pode interferir com o balanceamento de carga dos pedidos entre réplicas e afetar negativamente o desempenho do serviço de pesquisa. O valor utilizado como sessionId não pode começar com um caráter "_". Se um serviço não tiver réplicas, este parâmetro não tem qualquer efeito no desempenho ou na consistência da classificação.
$skip número inteiro Opcional. O número de resultados da pesquisa a ignorar. Quando chamado com POST, este parâmetro tem o nome skip em vez de $skip. Este valor não pode ser superior a 100 000. Se precisar de analisar documentos em sequência, mas não puder utilizar $skip devido a esta limitação, considere utilizar $orderby num campo que tenha valores exclusivos para cada documento no índice (como a chave do documento, por exemplo) e, em vez disso, $filter com uma consulta de intervalo.
speller (pré-visualização) String Opcional. Os valores válidos são "none" e "lexicon". A predefinição é "none". Melhore a recolha ao corrigir ortográficos termos de consulta de pesquisa individuais. Pode utilizá-lo em tipos de consulta simples, completos e semânticos. Se for utilizado, o parâmetro do corretor ortográfico requer queryLanguage. Para obter mais informações e exemplos, veja Adicionar verificação ortográfica a consultas.
$top número inteiro Opcional. O número de resultados da pesquisa a obter. Esta predefinição é 50. Quando chamado com POST, este parâmetro tem o nome top em vez de $top. Se especificar um valor superior a 1000 e existirem mais de 1000 resultados, apenas serão devolvidos os primeiros 1000 resultados, juntamente com uma ligação para a página seguinte de resultados (consulte "@odata.nextLink" no exemplo abaixo).

O Azure AI Search utiliza paginação do lado do servidor para impedir que as consultas recuperem demasiados documentos ao mesmo tempo. O tamanho de página predefinido é 50, enquanto o tamanho máximo da página é 1000. Isto significa que, por predefinição, os Documentos de Pesquisa devolvem, no máximo, 50 resultados se não especificar $top. Se existirem mais de 50 resultados, a resposta inclui informações para obter a página seguinte de, no máximo, 50 resultados (veja "@odata.nextLink" e "@search.nextPageParameters" nos Exemplos abaixo. Da mesma forma, se especificar um valor superior a 1000 para $top e existirem mais de 1000 resultados, apenas são devolvidos os primeiros 1000 resultados, juntamente com informações para obter a página seguinte de, no máximo, 1000 resultados.
vetores (pré-visualização) matriz Opcional. O tipo de objeto na matriz é uma consulta de vetor. Os parâmetros de consulta para consultas de vetor.

"value" é a representação de vetor de uma consulta de pesquisa. Esta representação tem de ser formada externamente. O Azure AI Search não cria incorporações.

"k" é um número inteiro que especifica o número de vizinhos mais próximos a devolver à medida que são atingidos. A predefinição é 50. O mínimo é 1 e o máximo é 10 000.

"campos" é um nome de campo de lista delimitado por vírgulas que contém dados de vetor. Apenas os campos do tipo Collection(Edm.Single) podem ser incluídos na lista "campos".

Resposta

Código de Estado: 200 OK é devolvido para uma resposta com êxito. Existem duas respostas de exemplo neste artigo, uma para cada uma para pesquisa semântica e featuresMode.

Resposta de exemplo para consulta semântica

O primeiro exemplo mostra a resposta completa para o resultado mais alto para a consulta semântica "como se formam as nuvens".

  • "@search.answers" é apresentado quando especifica o parâmetro de respostas e quando a consulta e os campos visados no índice contêm conteúdo que pode ser reconhecido como uma resposta. A @search.answers matriz que tem uma chave, texto e destaques. A classificação é um indicador da força da resposta.

  • "value" é o corpo da resposta. O @search.rerankerScore é atribuído pelo algoritmo de classificação semântica e é utilizado para classificar resultados (@search.score é do algoritmo de semelhança BM25, utilizado ao classificar os resultados iniciais). As legendas incluem texto simples e versões realçadas. Este exemplo foi criado com o OCR e as competências de reconhecimento de entidades. Os campos do conteúdo extraído e intercalado estão incluídos na resposta.

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

Resposta de exemplo para featuresMode

Este exemplo mostra a saída "@search.features" de uma consulta que inclui 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)
  }

Exemplos

Pode encontrar mais exemplos na Sintaxe de Expressão OData para a Pesquisa de IA do Azure.

Exemplo: pesquisa simples

Encontre documentos no índice com a sintaxe de consulta simples. Esta consulta devolve hotéis onde os campos pesquisáveis contêm os termos "conforto" e "localização", mas não "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"  
    }  

Dica

A utilização de searchMode=all substitui a predefinição de searchMode=any, garantindo que -motel significa "E NÃO" em vez de "OU NÃO". Sem searchMode=allo , obtém "OU NÃO", que se expande em vez de restringir os resultados da pesquisa, o que pode ser contra-intuitivo para alguns utilizadores.

Exemplo: pesquisa lucene completa

Encontre documentos no índice com a sintaxe de consulta Lucene (veja Sintaxe de consulta Lucene no Azure AI Search). Esta consulta devolve hotéis onde o campo de categoria contém o termo "orçamento" e todos os campos pesquisáveis que contêm a expressão "recentemente renovado". Os documentos que contêm a expressão "recentemente renovado" são classificados mais alto como resultado do valor de aumento do termo (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"  
}  

Exemplo: pesquisa semântica

Invoque o modelo de classificação semântica com respostas, legendas e conteúdo realçado. A resposta para esta consulta pode ser encontrada na secção 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"
}

Exemplo: pesquisa de vetores

Para um índice com campos do tipo Collection(Edm.Single) e uma configuração de vetor, pode especificar parâmetros de consulta de vetor. Os parâmetros de consulta de vetor incluem os campos de vetor que estão no âmbito da consulta, o número "k" dos resultados mais altos a devolver e uma representação vetor da entrada da consulta.

Adicionar um parâmetro "selecionar" é útil se o índice incluir campos de texto. A correspondência e a relevância baseiam-se em vetores, mas os campos que contêm conteúdo legível por humanos são mais úteis para alguém que lê os resultados. Em alternativa, pode escrever código que converte os dados de vetor nos resultados da pesquisa em 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"
}

Exemplo: orderby

Pesquise o índice e devolva os resultados ordenados por data por ordem 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"
    }  

Exemplo: filtrar com uma expressão OData

Obter documentos que correspondam a uma expressão 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'"  
    }  

Exemplo: pesquisa com facetas

Numa pesquisa com facetas, pesquise o índice e obtenha facetas para categorias, classificações, etiquetas, bem como itens com baseRate em 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" ]  
    }  

Repare que a última faceta está num sub-campo. As facetas contam o documento principal (Hotéis) e não os subdocumentos intermédios (Quartos), pelo que a resposta determinará o número de hotéis que têm quartos em cada registo de preços.

Exemplo: Restringir uma consulta facetada

Com um filtro, reduza o resultado da consulta facetada anterior depois de o utilizador selecionar Classificação 3 e categoria "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'"  
    }  

Exemplo: pesquisa com facetas com limites em cada categoria

Numa pesquisa facetada, defina um limite superior em termos exclusivos devolvidos numa consulta. A predefinição é 10, mas pode aumentar ou diminuir este valor com o parâmetro de contagem no atributo faceta. Este exemplo devolve facetas para a cidade, 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" ]  
    }  

Exemplo: pesquisa no campo

Procurar o índice em campos específicos (por exemplo, um 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"
    }  

Procure o índice em vários campos. Por exemplo, pode armazenar e consultar campos pesquisáveis em vários idiomas, todos no mesmo índice. Se as descrições em inglês e francês coexistirem no mesmo documento, pode devolver qualquer ou todos os resultados da 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"
    }  

Só pode consultar um índice de cada vez. Não crie vários índices para cada idioma, a menos que planeie consultar um de cada vez.

Exemplo: resultados da paginação

Obtenha a primeira página de itens (o tamanho da página é 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  
    }  

Obtenha a segunda página de itens (o tamanho da página é 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  
    }  

Exemplo: limitar campos num conjunto de resultados

Obter um 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"
    }  

Exemplo: atingiu o realce nos resultados

Pesquise o índice e devolva fragmentos com destaques de impacto:

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

Exemplo: Pesquisa geoespacial

Pesquise o índice e devolva documentos ordenados de mais perto para mais longe de uma localização de referência:

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)')"
    }  

Exemplo: "localizar por mim" (aumentar a relevância das localizações próximas

Pesquise o índice assumindo que existe um perfil de classificação chamado "geo" com duas funções de classificação de distância, uma que define um parâmetro chamado "currentLocation" e outro que define um parâmetro chamado "lastLocation". No exemplo seguinte, "currentLocation" tem um delimitador de um único traço (-). É seguido por coordenadas de longitude e latitude, onde a longitude é um 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" ]  
    }  

Exemplo: consultar por índice completo em vez de partições horizontais

Localize documentos no índice ao mesmo tempo que favorece a classificação consistente em relação à latência mais baixa. Esta consulta calcula as frequências dos documentos em todo o índice e faz o melhor esforço para direcionar a mesma réplica para todas as consultas na mesma "sessão", o que ajuda a gerar uma classificação estável e reproduzível.

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

Exemplo: estatísticas de classificação (featuresMode)

Localize documentos no índice e devolva uma lista de funcionalidades de obtenção de informações para cada resultado que descreva a classificação entre o documento correspondente e a consulta. A consulta também calcula as frequências dos documentos em todo o índice para produzir classificações mais consistentes.

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

Um exemplo de uma resposta que inclui search.features um aspeto semelhante ao seguinte:

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

Definições

Esta secção fornece detalhes sobre parâmetros demasiado complexos para serem incluídos na tabela principal.

Ligação Description
queryLanguage Lista dos idiomas suportados para a pesquisa ortográfica e semântica.

queryLanguage

Os valores válidos para o parâmetro queryLanguage são fornecidos na tabela seguinte, na coluna "queryLanguage" e não são sensíveis a maiúsculas e minúsculas. A predefinição para o parâmetro como um todo é "en-us". Em cada idioma, existe uma variante predefinida para cada código de idioma de dois carateres. Por exemplo, se especificar "es", então "es-us" é utilizado por predefinição. O parâmetro queryLanguage é necessário para um pedido de consulta que inclua "queryType=semântico" ou "speller=lexicon". Existe apenas um valor queryLanguage para todo o pedido e esse valor será utilizado para classificação semântica, legendas, respostas e soletrador (não há substituição para funcionalidades individuais).

Neste momento, o suporte de idioma varia consoante a funcionalidade. Apenas o inglês, espanhol, francês e alemão são suportados pelo conjunto completo de funcionalidades, mas repare que a verificação ortográfica implementa menos variantes.

Se especificar um código de idioma que não é suportado por uma determinada funcionalidade, como EN-GB com speller, o serviço devolve HTTP 400.

Para obter mais informações sobre como utilizar cada funcionalidade, consulte Ativar classificação semântica e legendas, Devolver uma resposta semântica e Adicionar verificação ortográfica às consultas.

A designação "(pré-visualização)" indica que os testes de validação em todas as funcionalidades (classificação semântica, legendas, respostas e verificação ortográfica) estão em curso ou pendentes. Incentivamos a utilização de todas as variantes de idioma na tabela seguinte, mas recomendamos mais testes de idiomas de pré-visualização para garantir que os resultados são válidos para o seu conteúdo. Os idiomas com uma marca de verificação e nenhuma designação de pré-visualização foram validados com conjuntos de dados equivalentes, com ganho mensurável em relevância.

Linguagem queryLanguage Classificador semântico e legendas Resposta semântica Ortográfico
Inglês [en] en, en-US (predefinição), en-GB, en-IN, en-CA, en-AU ✔️ ✔️ ✔️ (en, en-US)
Francês [fr] fr, fr-FR (predefinição), fr-CA ✔️ ✔️ ✔️ (fr, fr-FR)
Alemão [de] de, de-DE (predefinição) ✔️ ✔️ ✔️ (de, de-DE)
Espanhol [es] es, es-ES (predefinição), es-MX ✔️ ✔️ ✔️ (es, es-ES)
Italiano [it] it, it-IT (predefinição) ✔️ ✔️
Japonês [ja] ja, ja-JP (predefinição) ✔️ ✔️ (pré-visualização)
Chinês [zh] zh, zh-CN (predefinição), zh-TW ✔️ ✔️ (pré-visualização)
Português [pt] pt, pt-BR (predefinição), pt-PT ✔️ ✔️ (pré-visualização)
Neerlandês [nl] nl, nl-BE, nl-NL (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização) ✔️ (nl, nl-NL)
Árabe [ar] ar, ar-SA (predefinição), ar-EG, ar-MA, ar-KW, ar-JO ✔️ (pré-visualização) ✔️ (pré-visualização)
Arménio hy-AM (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Bangla bn-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Basco eu-ES (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Búlgaro [bg] bg, bg-BG (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Catalão [ca] ca, ca-ES (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Croata [hr] hr, hr-HR (predefinição), hr-BA ✔️ (pré-visualização) ✔️ (pré-visualização)
Checo [cs] cs, cs-CZ (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Dinamarquês [da] da, da-DK (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Estónio [et] et, et-EE (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Finlandês [fi] fi, fi-FI (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Galego gl-ES (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Grego [el] el, el-GR (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Gujarati gu-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Hebraico he-IL (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Hindi [hi] hi, hi-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Húngaro [hu] hu, hu-HU (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Islandês [is] is, is-IS (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Indonésio [id] id, id-ID (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Irlandês ga-IE (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Kannada kn-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Coreano [ko] ko, ko-KR (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Letão [lv] lv, lv-LV (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Lituano [lt] lt, lt-LT (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Malayalam ml-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Malaio [ms] ms, ms-MY (predefinição), ms-BN ✔️ (pré-visualização) ✔️ (pré-visualização)
Marathi mr-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Norueguês [no] no, no-NO (predefinição), nb-NO ✔️ (pré-visualização) ✔️ (pré-visualização)
Persa fa-AE (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Polaco [pl] pl, pl-PL (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Punjabi pa-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Romeno [ro] ro, ro-RO (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Russo [ru] ru, ru-RU (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Sérvio [sr] (Cirílico ou Latim) sr, sr-BA (predefinição), sr-ME, sr-RS ✔️ (pré-visualização) ✔️ (pré-visualização)
Eslovaco [sk] sk, sk-SK (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Esloveno [sl] sl, sl-SL (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Tamil [ta] ta, ta-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Sueco [sv] sv, sv-SE (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Telugu te-IN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Tailandês [th] th, th-TH (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Turco [tr] tr, tr-TR (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Ucraniano [uk] uk, uk-UA (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Urdu ur-PK (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)
Vietnamita [va] va, vi-VN (predefinição) ✔️ (pré-visualização) ✔️ (pré-visualização)

Ver também