Pesquisar documentos (Versão prévia da API REST)

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

Importante

2023-07-01-Preview adiciona:

  • Parâmetro de consulta "vectors" que especifica qualquer solicitação de consulta de vetor. Cada objeto deve conter a representação de vetor da consulta, o número "k" de vizinhos mais próximos a serem retornados nos resultados e os campos de vetor a serem usados durante a execução da consulta.

2021-04-30-Preview adiciona:

  • "semanticConfiguration" dá suporte à classificação semântica de escopo para campos específicos.
  • "captions" retorna frases extraídas de passagens-chave nos documentos mais altos classificados semanticamente.

2020-06-30-Preview adiciona:

  • "queryType=semantic" dá suporte a reclassificados semânticos e respostas.
  • "searchFields" em uma consulta semântica estabelece a ordem de prioridade dos campos usados para formular legendas e respostas. Essa abordagem foi substituída por "semanticConfiguration" em 2021-04-30-Preview e agora está obsoleta.
  • O "verificador ortográfico" habilita a correção ortográfica na entrada da consulta.
  • "queryLanguage" é necessário para "queryType=semantic" e "speller".
  • "featuresMode" descompacta uma pontuação de pesquisa, relatando a frequência de termo por campo, a pontuação de similaridade por campo e o número por campo de correspondências exclusivas.

Uma solicitação de consulta tem como destino a coleção de documentos de um único índice em um serviço de pesquisa. Ele inclui parâmetros que definem os critérios de correspondência e parâmetros que moldam a resposta. Você também pode usar um alias de índice para direcionar um índice específico em vez de usar o próprio nome de índice.

Você pode usar GET ou POST para a maioria das consultas, mas deve usar POST para pesquisa de vetor porque os parâmetros de consulta vetor não se encaixam em um URI. Os parâmetros de consulta são especificados na cadeia de caracteres de consulta para solicitações GET e no corpo da solicitação para solicitações 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 você estiver usando POST, adicione a ação "pesquisar" como um parâmetro de 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 da URL de solicitação não pode exceder 8 KB. Esse comprimento é suficiente para a maioria dos aplicativos. No entanto, alguns aplicativos produzem consultas grandes, especificamente quando expressões de filtro OData são usadas. Para esses aplicativos, HTTP POST é uma opção melhor porque permite filtros maiores que GET.

Com o POST, o número de cláusulas em um filtro é o fator limitante, não o tamanho da cadeia de caracteres de filtro não processada, uma vez que o limite de tamanho da solicitação POST é quase 16 MB. Embora o limite de tamanho da solicitação POST seja grande, as expressões de filtro não podem ser arbitrariamente complexas. Para obter mais informações sobre limitações de complexidade de filtro, consulte Sintaxe de expressão OData para a Pesquisa de IA do Azure.

Parâmetros de URI

Parâmetro Descrição
nome do serviço Obrigatórios. Defina esse nome como o nome exclusivo definido pelo usuário do serviço de pesquisa.
index name/docs Obrigatórios. Especifica a coleção de documentos de um índice nomeado. O nome de um alias de índice também pode ser usado no lugar do nome do índice.
parâmetros de consulta Os parâmetros de consulta são especificados no URI para solicitações GET e no corpo da solicitação para solicitações POST.
api-version Obrigatórios. A versão atual é 2023-07-01-Preview. Confira Versões de API para obter mais versões.

Recomendações de codificação de URL

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

  • pequisa
  • $filter
  • facet
  • highlightPreTag
  • highlightPostTag

A codificação de URL só é recomendada para parâmetros individuais. Se você usar a codificação de URL inadvertidamente para a cadeia de caracteres de consulta inteira (tudo após o ?), as solicitações são interrompidas.

Além disso, a codificação de URL só é necessária ao se chamar a API REST diretamente usando GET. Nenhuma codificação de URL é necessária ao usar POST ou ao usar a biblioteca de clientes .NET do Azure AI Search, que manipula a codificação para você.

Cabeçalhos de solicitação

A tabela a seguir descreve os cabeçalhos de solicitação necessários e opcionais

Campos Descrição
Tipo de conteúdo Obrigatórios. Defina esse valor como "application/json"
chave de API Opcional se você estiver usando funções do Azure e um token de portador for fornecido na solicitação, caso contrário, uma chave será necessária. Uma chave de api é uma cadeia de caracteres exclusiva gerada pelo sistema que autentica a solicitação para o serviço de pesquisa. As solicitações de consulta na coleção de documentos podem especificar uma chave de administrador ou chave de consulta como a chave de API. A chave de consulta é usada para operações somente leitura na coleção de documentos. Confira Conectar-se ao Azure AI Search usando a autenticação de chave para obter detalhes.

Corpo da solicitação

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

Às vezes, a Pesquisa de IA do Azure não pode retornar todos os resultados solicitados em uma única resposta de Pesquisa. Uma resposta parcial pode ocorrer por diferentes motivos, como quando a consulta retorna muitos documentos por não especificar $top ou especificando um valor para $ top que é muito grande. Nesses casos, o Azure AI Search inclui a @odata.nextLink anotação no corpo da resposta e também @search.nextPageParameters se foi uma solicitação POST. Você pode usar os valores dessas anotações para formular outra solicitação Pesquisar para obter a próxima parte da resposta da pesquisa. Esse comportamento é chamado de continuação da solicitação de Pesquisa original e as anotações são chamadas de tokens de continuação. Consulte o exemplo na seção Resposta para obter detalhes sobre a sintaxe dessas anotações e onde elas aparecem no corpo da resposta.

Os motivos pelos quais o Azure AI Search pode retornar tokens de continuação são específicos da implementação e estão sujeitos a alterações. Clientes robustos devem sempre estar prontos para lidar com casos em que são retornados menos documentos do que o esperado e um token de continuação é incluído para continuar recuperando os documentos. Observe também que você deve usar o mesmo método HTTP que a solicitação original para continuar. Por exemplo, se você tiver enviado uma solicitação GET, quaisquer solicitações de continuação que você enviar também deverão usar GET (e da mesma forma para POST).

Observação

A finalidade de @odata.nextLink e @search.nextPageParameters é proteger o serviço contra consultas que solicitam muitos resultados, não para fornecer um mecanismo geral para paginação. Se você quiser percorrer os resultados, use $top e $skip juntos. Por exemplo, se você quiser páginas de tamanho 10, sua primeira solicitação deverá ter $top=10 e $skip=0, a segunda solicitação deve ter $top=10 e $skip=10, a terceira solicitação deve ter $top=10 e $skip=20 e assim por diante.

Parâmetros de consulta

Uma consulta aceita vários parâmetros na URL quando chamada com GET e como propriedades JSON no corpo da solicitação quando chamada com POST. A sintaxe para alguns parâmetros é ligeiramente diferente entre GET e POST. Essas diferenças são observadas na tabela a seguir.

Nome Tipo Descrição
respostas (versão prévia) string Opcional. Os valores válidos são "none" e "extractive". O padrão é "none". Esse parâmetro só será válido se o tipo de consulta for "semântico". Quando definida como "extrativa", a consulta formula e retorna respostas de passagens-chave nos documentos mais altos classificados semanticamente. O padrão é uma resposta, mas você pode especificar até 10 adicionando uma contagem. Por exemplo, "answers": "extractive|count-3" retorna três respostas. Para que uma resposta seja retornada, deve haver conteúdo textual no campo de destino que se pareça com uma resposta. Os modelos de linguagem usados para respostas são treinados para reconhecer respostas, não gerá-las. Além disso, a consulta em si deve se parecer com uma pergunta.
api-version string Obrigatórios. Versão da API REST usada para a solicitação. Para obter uma lista de versões com suporte, consulte Versões de API. Para essa operação, a api-version é especificada como um parâmetro de URI, independentemente de você chamar Pesquisar Documentos com GET ou POST.
captions (versão prévia) string Opcional. Os valores válidos são "none" e "extractive". O padrão é "none". Esse parâmetro só será válido se o tipo de consulta for "semântico". Quando definida como "extrativa", a consulta retorna legendas extraídas de passagens-chave nos documentos mais bem classificados. Quando captions é definido como 'extractive', o realce é habilitado por padrão e pode ser configurado acrescentando o caractere de pipe '|' seguido pela opção 'highlight-true</false>', como 'extractive|highlight-true'.
$count booleano Opcional. Os valores válidos são "true" ou "false". O padrão é "false". Quando chamado com POST, esse parâmetro é nomeado count em vez de $count. Especifica se deve buscar a contagem total de resultados. Esse valor é a contagem de todos os documentos que correspondem aos parâmetros de pesquisa e $filter, ignorando $top e $skip. Definir esse valor como "true" pode prejudicar o desempenho. A contagem será precisa se o índice for estável, mas sub-relatará ou sobre-relatará todos os documentos adicionados, atualizados ou excluídos ativamente. Se você quiser obter apenas a contagem sem documentos, poderá usar $top=0.
facetas ou facetas string Opcional. Um campo a ser faceta por, em que o campo é atribuído como "faceta". Quando chamado com GET, facet é um campo (facet: field1). Quando chamado com POST, esse parâmetro é nomeado facets em vez de facet e é especificado como uma matriz (facets: [field1, field2, field3]). A cadeia de caracteres 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 faceta; o padrão é 10. Não há limite superior no número de termos, mas valores mais altos prejudicam 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 categorias principais nos resultados da faceta. Se o parâmetro count for menor que o número de termos exclusivos, os resultados poderão não ser precisos. Isso ocorre devido à maneira como as consultas de facetamento são distribuídas entre fragmentos. Para obter uma contagem precisa em todos os fragmentos, você pode definir count como zero ou como um valor maior ou igual ao número de valores exclusivos no campo de faceta. A compensação é maior latência.

"sort" pode ser definido como "count", "-count", "value", "-value". Use count para classificar decrescente por contagem. Use -count para classificar em ordem crescente por contagem. Use o valor para classificar em ordem crescente por valor. Use -value para classificar decrescente por valor (por exemplo, "facet=category,count:3,sort:count" obtém as três principais categorias na faceta resulta em ordem decrescente 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 acessos, Motel tem seis, e Luxury tem quatro, então os baldes estão no pedido Motel, Budget, Luxury. Para -value, "facet=rating,sort:-value" produz buckets para todas as classificações possíveis, em ordem decrescente por valor (por exemplo, se as classificações forem de 1 a 5, os buckets serão ordenados 5, 4, 3, 2, 1, independentemente de quantos documentos corresponderem a cada classificação).

"values" pode definir como valores numéricos delimitados por pipe ou Edm.DateTimeOffset especificando um conjunto dinâmico de valores de entrada de faceta (por exemplo, "facet=baseRate,values:10 | 20" produz três buckets: um para a taxa base 0 até, mas não incluindo 10, um para 10 até, mas não incluindo 20, e outro para 20 e superior). Uma cadeia de caracteres "facet=lastRenovationDate,values:2010-02-01T00:00:00Z" produz dois buckets: um para hotéis renovados antes de fevereiro de 2010 e outro para hotéis renovados em 1º de fevereiro de 2010 ou posterior. Os valores devem ser listados em ordem sequencial e crescente para obter os resultados esperados.

"interval" é um intervalo inteiro maior que 0 para números ou minuto, hora, dia, semana, mês, trimestre, ano para valores de data e hora. Por exemplo, "facet=baseRate,interval:100" produz buckets com base em intervalos de taxa base de tamanho 100. Se as taxas de base forem todas entre US$ 60 e US$ 600, há buckets para 0 a 100, 100 a 200, 300 a 200, 300 a 400, 400 a 500 e 500 a 600. A cadeia de caracteres "facet=lastRenovationDate,interval:year" produz um bucket para cada ano quando os hotéis foram renovados.

"timeoffset" pode ser definido como ([+-]hh:mm, [+-]hhmm ou [+-]hh). Se usado, o parâmetro timeoffset deve ser combinado com a opção interval e somente quando aplicado a um campo do tipo Edm.DateTimeOffset. O valor especifica o deslocamento de hora em relação ao UTC para compensar ao definir limites de tempo. Por exemplo: "facet=lastRenovationDate,interval:day,timeoffset:-01:00" usa o limite do dia que começa às 01:00:00 UTC (meia-noite no fuso horário de destino).

A contagem e a classificação podem ser combinadas na mesma especificação de faceta, mas não podem ser combinadas com intervalo ou valores, e o intervalo e os valores não podem ser combinados juntos.

As facetas de intervalo na data e hora são computadas com base na hora UTC se o deslocamento 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 (versão prévia) booleano Opcional. Os valores válidos são "habilitados" e "desabilitados". O padrão é "desabilitado". Um valor que especifica se os resultados devem incluir recursos de resultado da consulta, usados para calcular a pontuação de relevância de um documento em relação à consulta, como a similaridade por campo. Use "enabled" para expor mais recursos de resultado de consulta: pontuação de similaridade por campo, frequência de termo por campo e número por campo de tokens exclusivos correspondentes. Para obter mais informações, consulte Similaridade e pontuação.
$filter string Opcional. Uma expressão de pesquisa estruturada na sintaxe do OData padrão. Somente campos filtráveis podem ser usados em um filtro. Quando chamado com POST, esse parâmetro é nomeado filtro em vez de $filter. Consulte Sintaxe de expressão OData para a Pesquisa de IA do Azure para obter detalhes sobre o subconjunto da gramática de expressão OData compatível com o Azure AI Search.
highlight string Opcional. Um conjunto de nomes de campos separados por vírgulas usado para realçar a ocorrência. Somente campos pesquisáveis podem ser usados para realce de ocorrências. Por padrão, a Pesquisa de IA do Azure retorna até cinco realces por campo. O limite é configurável por campo acrescentando "-<max # de realces>" após o nome do campo. Por exemplo, "highlight=title-3,description-10" retorna até três ocorrências realçadas do campo de título e até 10 ocorrências do campo de descrição. O número máximo de realces deve ser um inteiro entre 1 e 1000 inclusive.
highlightPostTag string Opcional. Assume o padrão de "</em>". Uma marca de cadeia de caracteres que acrescenta ao termo realçado. Deve ser definido com highlightPreTag. Caracteres reservados na URL devem ser codificados por percentual (por exemplo, %23, em vez de #).
highlightPreTag string Opcional. Assume o padrão de "</em>". Uma marca de cadeia de caracteres que acrescenta ao termo realçado. Deve ser definido com highlightPostTag. Caracteres reservados na URL devem ser codificados por percentual (por exemplo, %23, em vez de #).
minimumCoverage inteiro Opcional. Os valores válidos são um número entre 0 e 100, indicando a porcentagem do índice que deve estar disponível para atender à consulta antes que ela possa ser relatada como um sucesso. O padrão é "100".

Uma cobertura de cem por cento significa que todos os fragmentos responderam à solicitação (nem problemas de integridade do serviço nem atividades de manutenção reduziram a cobertura). Na configuração padrão, menos de cobertura completa retorna o código http status 503.

A redução de minimumCoverage poderá ser útil se 503 erros estiverem ocorrendo e você quiser aumentar a probabilidade de sucesso da consulta, especialmente para serviços configurados para um réplica. Se você definir minimumCoverage e Search for bem-sucedido, ele retornará HTTP 200 e incluirá um @search.coverage valor na resposta indicando o percentual do índice incluído na consulta. Nesse cenário, nem todos os documentos correspondentes têm a garantia de estar presentes nos resultados da pesquisa, mas se a disponibilidade da pesquisa for mais importante do que o recall, a redução da cobertura poderá ser uma estratégia de mitigação viável.
$orderby string Opcional. Uma lista de expressões separadas por vírgulas para classificar os resultados. Quando chamado com POST, esse parâmetro é nomeado 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 crescente e "desc" para indicar decrescente. Se houver valores nulos no campo de classificação, os nulos aparecerão primeiro em ordem crescente e por último em ordem decrescente. O padrão é a ordem crescente. Os empates serão resolvidos pelas pontuações de correspondência de documentos. Se nenhuma $orderby for especificada, a ordem de classificação padrão será decrescente por pontuação de correspondência do documento. Há um limite de 32 cláusulas para $orderby.
queryLanguage (versão prévia) string Opcional. Os valores válidos são um idioma com suporte. O padrão é "en-us". Esse parâmetro deve ser definido se você usar speller=lexicon ou queryType=semantic. A linguagem especificada em queryLanguage é usada para marcar ortográfica e pelos modelos semânticos que reclassificados resultam e extraem uma legenda ou resposta. As bibliotecas usadas para queryLanguage são independentes de outros atributos de campo baseados em localidade, como analisadores de linguagem usados para indexação e pesquisa de texto completo.
queryType string Opcional. Os valores válidos são "simples", "completo" ou "semântico" (versão prévia). Usa como padrão "simples". Esse valor é ignorado para pesquisa de vetor, mas se aplica à pesquisa de texto em cenários híbridos.

"simple" interpreta cadeias de caracteres de consulta usando 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 padrão.

"full" interpreta as cadeias de caracteres de consulta usando a sintaxe de consulta Lucene completa que permite pesquisas específicas e ponderadas do campo. Não há suporte para a pesquisa de intervalo na linguagem de consulta Lucene em favor de $filter, que oferece funcionalidade semelhante."

semântica" melhora a precisão dos resultados da pesquisa, reclassindo as 50 principais correspondências usando um modelo de classificação treinado no Bing corpus para consultas expressas em linguagem natural em vez de palavras-chave. Se você definir o tipo de consulta como semântico, também deverá definir queryLanguage e semanticConfiguration. Opcionalmente, você pode definir respostas se quiser retornar também as três principais respostas se a entrada de consulta tiver sido formulada em linguagem natural ("o que é ...) e, opcionalmente, você pode definir legendas para extrair as principais passagens dos documentos mais bem classificados.
scoreParameter string Opcional. Indica os valores de cada parâmetro definido em uma função de pontuação (como referencePointParameter) usando o formato "name-value1,value2,..." Quando chamado com POST, esse parâmetro é nomeado scoreParameters em vez de scoreParameter. Além disso, especifique-o como uma matriz JSON de cadeias de caracteres em que cada cadeia de caracteres é um par de nomes-valores separados.

Para perfis de pontuação que incluem uma função, separe a função de sua lista de entrada com um - caractere. 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 pontuação, como para aumento de marca que pode conter vírgulas, você pode escapar de todos esses valores na lista usando aspas simples. Se os próprios valores contiverem aspas simples, você poderá liberá-las ao duplicar. Suponha que você tenha um parâmetro de aumento de marca chamado "mytag" e queira aumentar os valores de marcação "Hello, O'Brien" e "Smith", a opção de cadeia de caracteres de consulta seria "&scoreParameter=mytag-'Hello, O''Brien',Smith". Aspas são necessárias apenas para valores que contêm vírgulas.
scoreProfile string Opcional. O nome de um perfil de pontuação para avaliar as pontuações correspondentes para corresponder documentos para classificar os resultados.
scoreStatistics string Opcional. Os valores válidos são "local" ou "global". O padrão é "local". Especifique se é necessário calcular estatísticas de pontuação, como frequência de documento, globalmente (em todos os fragmentos) para pontuação mais consistente ou localmente (no fragmento atual) para menor latência. Confira Estatísticas de Pontuação no Azure AI Search. As estatísticas de pontuação sempre serão calculadas localmente para termos que usam pesquisa difusa ('~').
pequisa string Opcional. O texto a ser pesquisado. Esse valor é ignorado para pesquisa de vetor, mas se aplica à pesquisa de texto em cenários híbridos. Em APIs REST, todos os campos pesquisáveis são pesquisados por padrão, a menos que searchFields seja especificado. No índice, o texto em um campo pesquisável é tokenizado, portanto, vários termos podem ser separados por espaço em branco (por exemplo: 'search=hello world'). Para corresponder a qualquer termo, use * (isso pode ser útil para consultas de filtros boolianos). A omissão desse parâmetro tem o mesmo efeito que sua definição como *. Consulte Sintaxe de consulta simples para obter detalhes na sintaxe de pesquisa.

Às vezes, os resultados podem ser surpreendentes ao consultar campos pesquisáveis. O tokenizer inclui lógica para lidar com casos comuns para texto em inglês como apóstrofes, vírgulas nos números e assim por diante. 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 usadas como separadores de milhares para números grandes em inglês. Por esse motivo, recomendamos usar 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 "any" ou "all" Defaults to "any". Especifica se algum ou todos os termos de pesquisa devem ser iguais para considerar o documento uma correspondência.
searchFields string Opcional. A lista de nomes de campos separados por vírgula para procurar o texto especificado. Os campos de destino devem ser marcados como pesquisáveis no esquema de índice e devem ser do tipo Edm.String, Edm.ComplexTypeou Collection(Edm.String).
$select string Opcional. Uma lista de campos separados por vírgulas a serem incluídos no conjunto de resultados. Somente campos marcados como recuperáveis podem ser incluídos nesta cláusula. Se não for especificado ou se for definido como *, todos os campos marcados como recuperáveis no esquema serão incluídos na projeção. Quando chamado com POST, esse parâmetro é nomeado select em vez de $select.
semanticConfiguration (versão prévia) string Opcional. Obrigatório se queryType="semântica". O nome da configuração semântica que lista quais campos devem ser usados para classificação semântica, legendas, realces e respostas. Para obter mais informações, consulte Criar uma consulta semântica.
sessionID string Opcional. Usar sessionId ajuda a melhorar a consistência da pontuação de relevância para serviços de pesquisa com várias réplicas. Em configurações de várias réplica, pode haver pequenas diferenças entre as pontuações de relevância de documentos individuais para a mesma consulta. Quando uma ID de sessão é fornecida, o serviço faz o melhor esforço para rotear uma determinada solicitação para o mesmo réplica para essa sessão. Tenha cuidado para que a reutilização dos mesmos valores de ID de sessão repetidamente possa interferir no balanceamento de carga das solicitações entre réplicas e afetar negativamente o desempenho do serviço de pesquisa. O valor usado como sessionId não pode começar com um caractere '_'. Se um serviço não tiver réplicas, esse parâmetro não terá efeito sobre o desempenho ou a consistência de pontuação.
$skip inteiro Opcional. O número de resultados de pesquisa a ser ignorado. Quando chamado com POST, esse parâmetro é chamado skip em vez de $skip. Esse valor não deve ser maior que 100.000. Se você precisar verificar documentos em sequência, mas não puder usar $skip devido a essa limitação, considere usar $orderby em um campo que tenha valores exclusivos para cada documento no índice (como a chave do documento, por exemplo) e $filter com uma consulta de intervalo.
verificador ortográfico (versão prévia) Cadeia de caracteres Opcional. Os valores válidos são "none" e "lexicon". O padrão é "none". Melhore o recall corrigindo os termos de consulta de pesquisa individuais com correção ortográfica. Você pode usá-lo em tipos de consulta simples, completos e semânticos. Se usado, o parâmetro speller requer queryLanguage. Para obter mais informações e exemplos, consulte Adicionar marcar ortográfica a consultas.
$top inteiro Opcional. O número de resultados de pesquisa a ser recuperado. O padrão é 50. Quando chamado com POST, esse parâmetro é nomeado top em vez de $top. Se você especificar um valor maior que 1000 e houver mais de 1000 resultados, somente os primeiros 1000 resultados serão retornados, juntamente com um link para a próxima página de resultados (consulte "@odata.nextLink" no exemplo abaixo).

O Azure AI Search usa a paginação do lado do servidor para impedir que consultas recuperem muitos documentos ao mesmo tempo. O tamanho da página padrão é 50, enquanto o tamanho máximo da página é 1000. Isso significa que, por padrão , Os Documentos de Pesquisa retornarão no máximo 50 resultados se você não especificar $top. Se houver mais de 50 resultados, a resposta incluirá informações para recuperar a próxima página de no máximo 50 resultados (consulte "@odata.nextLink" e "@search.nextPageParameters" nos Exemplos abaixo. Da mesma forma, se você especificar um valor maior que 1000 para $top e houver mais de 1000 resultados, somente os primeiros 1000 resultados serão retornados, juntamente com informações para recuperar a próxima página de no máximo 1000 resultados.
vetores (versão prévia) array Opcional. O tipo de objeto dentro da matriz é uma consulta vetor. Os parâmetros de consulta para consultas vetoriais.

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

"k" é um inteiro que especifica o número de vizinhos mais próximos a serem retornados como principais ocorrências. O padrão é 50. O mínimo é 1 e o máximo é 10.000.

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

Resposta

Código de status: 200 OK é retornado para uma resposta bem-sucedida. Há duas respostas de exemplo neste artigo, 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 as nuvens se formam".

  • "@search.answers" aparece quando você especifica o parâmetro de respostas e quando a consulta e os campos de destino no índice contêm conteúdo que pode ser reconhecido como uma resposta. A @search.answers matriz que tem uma chave, texto e realces. A pontuaçã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 é usado para classificar os resultados (@search.score é do algoritmo de similaridade BM25, usado ao pontuar os resultados iniciais). As legendas incluem texto sem formatação e versões realçadas. Este exemplo foi criado usando o OCR e as habilidades de reconhecimento de entidade. Os campos para o conteúdo extraído e mesclado sã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

Você pode encontrar mais exemplos na Sintaxe de Expressão OData para o Azure AI Search.

Exemplo: pesquisa simples

Localize documentos no índice usando a sintaxe de consulta simples. Esta consulta retorna hotéis em que os campos de pesquisa contêm os termos "conforto" e "local", 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

O uso de searchMode=all substitui o padrão de searchMode=any, garantindo que -motel significa "AND NOT" em vez de "OR NOT". Sem searchMode=all, você obtém "OU NÃO", que expande em vez de restringir os resultados de pesquisa, e isso pode ser contraintuitivo para alguns usuários.

Exemplo: pesquisa completa do Lucene

Encontre documentos no índice usando a sintaxe de consulta Lucene (consulte Sintaxe de consulta Lucene no Azure AI Search). Essa consulta retorna hotéis onde o campo de categoria contém o termo "orçamento" e todos os campos pesquisáveis com a frase "renovado recentemente". Os documentos com a frase "renovado recentemente" apresentam uma classificação superior como um resultado do valor de aumento de 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 essa consulta pode ser encontrada na seçã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 vetor

Para um índice que tem campos do tipo Collection(Edm.Single) e uma configuração de vetor, você pode especificar parâmetros de consulta vetor. Os parâmetros de consulta vetor incluem os campos de vetor que estão no escopo da consulta, o número "k" de ocorrências principais a serem retornados e uma representação vetor da entrada de consulta.

Adicionar um parâmetro "select" será útil se o índice incluir campos de texto. A correspondência e a relevância são baseadas 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. Como alternativa, você pode escrever um 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 retorne os resultados classificados por data em ordem decrescente.

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 usando uma expressão OData

Recupere documentos que correspondem 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 facetada

Em uma pesquisa facetada, pesquise o índice e recupere facetas para categorias, classificações, marcas, 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" ]  
    }  

Observe que a última faceta está em um subcampo. As facetas contam o documento pai (Hotéis) e não os subdocumentos intermediários (Quartos), portanto, a resposta determinará o número de hotéis que têm quartos em cada bucket de preço.

Exemplo: restringir uma consulta facetada

Usando um filtro, restrinja o resultado da consulta facetada anterior depois que o usuário 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 facetada com limites em cada categoria

Em uma pesquisa facetada, definir um limite superior para termos exclusivos retornados em uma consulta. O padrão é 10, mas é possível aumentar ou diminuir esse valor usando o parâmetro de contagem no atributo da faceta. Esse exemplo retorna facetas para 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

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

Pesquise o índice em vários campos. Por exemplo, você 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, você poderá retornar qualquer um 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"
    }  

Você só pode consultar um índice por vez. Não crie vários índices para cada idioma, a menos que você planeje consultar um de cada vez.

Exemplo: paginação de resultados

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

Obter 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 em um conjunto de resultados

Recuperar 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: realce de clique nos resultados

Pesquise o índice e retorne fragmentos com realces de ocorrências:

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 retorne documentos classificados do local mais próximo ao mais longe de uma 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 de locais próximos

Pesquise o índice supondo que haja um perfil de pontuação chamado "geo" com duas funções de pontuação de distância, uma definindo um parâmetro chamado "currentLocation" e outra definindo um parâmetro chamado "lastLocation". No exemplo a seguir, "currentLocation" tem um delimitador de um único traço (-). Ele é seguido por coordenadas de longitude e latitude, em que 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 sobre o índice completo em vez de fragmentos

Encontre documentos no índice, favorecendo a pontuação consistente em relação à latência mais baixa. Essa consulta calcula as frequências do documento em todo o índice e faz um melhor esforço para direcionar o mesmo réplica para todas as consultas dentro da 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 pontuação (featuresMode)

Localize documentos no índice e retorne uma lista de recursos de recuperação de informações para cada resultado que descreve a pontuação entre o documento correspondente e a consulta. A consulta também calcula as frequências do documento em todo o índice para produzir uma pontuação mais consistente.

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 é 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 seção fornece detalhes sobre parâmetros que são muito complexos para cobrir na tabela main.

Link Descrição
Querylanguage Lista dos idiomas com suporte para a pesquisa semântica e ortográfica.

queryLanguage

Os valores válidos para o parâmetro queryLanguage são fornecidos na tabela a seguir, na coluna "queryLanguage" e não diferenciam maiúsculas de minúsculas. O padrão para o parâmetro como um todo é "en-us". Em cada idioma, há uma variante padrão para cada código de linguagem de dois caracteres. Por exemplo, se você especificar "es", "es-us" será usado por padrão. O parâmetro queryLanguage é necessário para uma solicitação de consulta que inclui "queryType=semantic" ou "speller=lexicon". Há apenas um valor queryLanguage para toda a solicitação e esse valor será usado para classificação semântica, legendas, respostas e verificador ortográfico (não há substituição para recursos individuais).

No momento, o suporte ao idioma varia de acordo com o recurso. Somente inglês, espanhol, francês e alemão têm suporte para o conjunto completo de recursos, mas observe que o feitiço marcar implementa menos variantes.

Se você especificar um código de idioma que não seja compatível com um determinado recurso, como EN-GB com verificador ortográfico, o serviço retornará HTTP 400.

Para obter mais informações sobre como usar cada recurso, consulte Habilitar classificação semântica e legendas, Retornar uma resposta semântica e Adicionar marcar ortográfica a consultas.

A designação "(versão prévia)" indica que o teste de validação em todos os recursos (classificação semântica, legendas, respostas e marcar ortográfica) está em andamento ou pendente. Incentivamos o uso de todas as variantes de linguagem na tabela a seguir, mas recomendamos mais testes de idiomas de visualização para garantir que os resultados sejam válidos para seu conteúdo. Linguagens com uma marca de marcar e nenhuma designação de visualização foram validadas usando conjuntos de dados equivalentes, com ganho mensurável em relevância.

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

Confira também