Compartilhar via


Pesquisar documentos (API REST de visualização)

aplica-se a: 2023-07-01-Preview. Não há mais suporte para essa versão. Atualizar imediatamente para uma versão mais recente.

Importante

2023-07-01-Preview adiciona:

  • "vetores" parâmetro de consulta especificando quaisquer solicitações 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.
  • "legendas" retorna frases extraídas de passagens-chave nos documentos com classificação semanticamente mais altas.

2020-06-30-Preview adiciona:

  • "queryType=semântico" 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.
  • "speller" permite a correção ortográfica na entrada da consulta.
  • "queryLanguage" é necessário para "queryType=semântica" e "speller".
  • "featuresMode" desempacota 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 destina-se à 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. parâmetros de consulta são especificados na cadeia 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 de "pesquisa" 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 POST, o número de cláusulas em um filtro é o fator limitante, não o tamanho da cadeia de caracteres de filtro bruto, pois o limite de tamanho da solicitação para POST é de aproximadamente 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 parado Azure AI Search.

Parâmetros de URI

Parâmetro Descrição
nome do serviço Necessário. Defina esse nome como o nome exclusivo definido pelo usuário do serviço de pesquisa.
nome/documentos do índice Necessário. 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 Necessário. Consulte versões de API para obter mais versões.

Recomendações de codificação de URL

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

  • procurar
  • $filter
  • faceta
  • highlightPreTag
  • highlightPostTag

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

Além disso, a codificação de URL só é necessária ao chamar a API REST diretamente usando GET. Nenhuma codificação de URL é necessária ao usar POST ou ao usar o de 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 obrigatórios e opcionais.

Campos Descrição
Tipo de conteúdo Necessário. 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. 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. Consulte Conectar-se ao Azure AI Search usando de 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, o Azure AI Search não pode retornar todos os resultados solicitados em uma única resposta de Pesquisa. Uma resposta parcial pode ocorrer por motivos diferentes, como quando a consulta retorna muitos documentos, não especificando $top ou especificando um valor para $top que é muito grande. Nesses casos, o Azure AI Search inclui a anotação @odata.nextLink 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 de Pesquisa para obter a próxima parte da resposta de pesquisa. Esse comportamento é chamado de de continuação da solicitação de Pesquisa original e as anotações são chamadas 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 sempre devem estar prontos para lidar com casos em que menos documentos do que o esperado são retornados e um token de continuação é incluído para continuar recuperando documentos. Observe também que você deve usar o mesmo método HTTP que a solicitação original para continuar. Por exemplo, se você enviou uma solicitação GET, todas as solicitações de continuação enviadas também deverão usar GET (e da mesma forma para POST).

Nota

A finalidade de @odata.nextLink e @search.nextPageParameters é proteger o serviço contra consultas que solicitam muitos resultados, não fornecer um mecanismo geral para paginação. Se você quiser analisar os resultados, use $top e $skip juntos. Por exemplo, se você quiser páginas do 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 de 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) corda 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 definido como "extrativo", a consulta formula e retorna respostas de passagens-chave nos documentos com classificação semanticamente mais altas. O padrão é uma resposta, mas você pode especificar até 10 adicionando uma contagem. Por exemplo, "respostas": "extractive|count-3" retorna três respostas. Para que uma resposta seja retornada, deve haver conteúdo verbatim no campo de destino que pareça 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 parecer uma pergunta.
api-version corda Necessário. Versão da API REST usada para a solicitação. Para obter uma lista de versões com suporte, consulte versões da API. Para esta operação, a versão da API é especificada como um parâmetro de URI, independentemente de você chamar Documentos de Pesquisa com GET ou POST.
legendas (versão prévia) corda 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 as legendas são definidas como 'extrativas', 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 contagem em vez de $count. Especifica se a contagem total de resultados deve ser buscada. 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 estiver estável, mas sub-relatará ou sub-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 corda 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írgula.

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

"contagem" é 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 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 em resultados de faceta. Se o parâmetro de contagem for menor que o número de termos exclusivos, os resultados poderão não ser precisos. Isso ocorre devido à forma como as consultas de detecção facial são distribuídas entre fragmentos. Para obter uma contagem precisa em todos os fragmentos, você pode definir a contagem como zero ou um valor maior ou igual ao número de valores exclusivos no campo faceta. A compensação é uma latência maior.

"sort" pode ser definido como "count", "-count", "value", "-value". Use a contagem para classificar decrescente por contagem. Use -count para classificar 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 em resultados de faceta em ordem decrescente pelo número de documentos com cada nome de cidade). Se as três principais categorias são Budget, Motel e Luxury, e Budget tem cinco acessos, Motel tem seis, e Luxury tem quatro, então os buckets 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 correspondem a cada classificação).

"valores" podem ser definidos 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 um 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.

"intervalo" é um intervalo inteiro maior que 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 buckets com base em intervalos de taxa base de tamanho 100. Se as taxas básicas estiverem entre US$ 60 e US$ 600, haverá buckets para 0-100, 100-200, 200-300, 300-400, 400-500 e 500-600. A cadeia de caracteres "facet=lastRenovationDate,interval:year" produz um bucket para cada ano em que 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 de intervalo e somente quando aplicado a um campo do tipo Edm.DateTimeOffset. O valor especifica o deslocamento de tempo UTC a ser contabilizado na configuração de 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).

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

Facetas de intervalo na hora da data 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 de consulta, usados para calcular a pontuação de relevância de um documento em relação à consulta, como por similaridade de campo. Use "habilitado" para expor mais recursos de resultado de consulta: por pontuação de similaridade de campo, por frequência de termo de campo e por número de campo de tokens exclusivos correspondentes. Para obter mais informações, consulte Similaridade e pontuação.
$filter corda Opcional. Uma expressão de pesquisa estruturada na sintaxe OData padrão. Somente campos filtrados podem ser usados em um filtro. Quando chamado com POST, esse parâmetro é chamado de filtro em vez de $filter. Consulte sintaxe de expressão OData para o Azure AI Search para obter detalhes sobre o subconjunto da gramática de expressão OData compatível com o Azure AI Search.
destacar corda Opcional. Um conjunto de nomes de campo separados por vírgulas usados para realces de ocorrência. Somente campos pesquisáveis podem ser usados para realce de clique. Por padrão, o Azure AI Search retorna até cinco realces por campo. O limite é configurável por campo acrescentando "-<máximo # de realces>" seguindo 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 corda Opcional. O padrão é "</em>". Uma marca de cadeia de caracteres que acrescenta ao termo realçado. Deve ser definido com highlightPreTag. Os caracteres reservados na URL devem ser codificados por porcentagem (por exemplo, %23 em vez de #).
highlightPreTag corda Opcional. O padrão é "</em>". Uma marca de cadeia de caracteres que se prepara para o termo realçado. Deve ser definido com highlightPostTag. Os caracteres reservados na URL devem ser codificados por porcentagem (por exemplo, %23 em vez de #).
minimumCoverage inteiro Opcional. Os valores válidos são um número entre 0 e 100, indicando o percentual do índice que deve estar disponível para atender à consulta antes que ela possa ser relatada como um êxito. O padrão é "100".

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 do que a cobertura completa retorna o código de status HTTP 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 os serviços configurados para uma réplica. Se você definir minimumCoverage e Search com êxito, ele retornará HTTP 200 e incluirá um valor @search.coverage na resposta que indica 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 pode ser uma estratégia de mitigação viável.
$orderby corda 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 interrompidos 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) corda 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. O idioma especificado em queryLanguage é usado para verificação 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 corda Opcional. Os valores válidos são "simples", "completo" ou "semântico" (versão prévia). O padrão é "simples". Esse valor é ignorado para pesquisa de vetor, mas se aplica à pesquisa de texto em cenários híbridos. "simples" interpreta cadeias de caracteres de consulta usando a de 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.

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

"semântica" melhora a precisão dos resultados da pesquisa, reclassindo as 50 principais correspondências usando um modelo de classificação treinado no corpus do Bing para consultas expressas em linguagem natural em oposição a palavras-chave. Se você definir o tipo de consulta como semântico, também deverá definir queryLanguage e semanticConfiguration. Opcionalmente, você poderá definir respostas se quiser retornar também as três principais respostas se a entrada da consulta tiver sido formulada em linguagem natural ("o que é um ...) e, opcionalmente, você pode definir legendas para extrair as principais passagens dos documentos mais bem classificados.
scoreParameter corda 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-a 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 o 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á escapar deles dobrando. Suponha que você tenha um parâmetro de aumento de marca chamado "mytag" e queira aumentar os valores de marca "Olá, O'Brien" e "Smith", a opção de cadeia de caracteres de consulta seria então "&scoreParameter=mytag-'Hello, O''Brien', Smith". Aspas são necessárias apenas para valores que contêm vírgulas.
scoreProfile corda Opcional. O nome de um perfil de pontuação para avaliar as pontuações de correspondência de documentos correspondentes para classificar os resultados.
scoreStatistics corda 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. Consulte 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 ('~').
procurar corda 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 filtro booliano). Omitir esse parâmetro tem o mesmo efeito que defini-lo como *. Consulte de sintaxe de consulta simples para obter detalhes sobre a sintaxe de pesquisa.

Os resultados às vezes podem ser surpreendentes ao consultar campos pesquisáveis. O tokenizador inclui lógica para lidar com casos comuns ao texto em inglês, como apóstrofos, vírgulas em 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 mil para grandes números 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 corda Opcional. Os valores válidos são "qualquer" ou "todos" Padrões para "qualquer". Especifica se qualquer um ou todos os termos de pesquisa devem ser correspondidos para contar o documento como uma correspondência.
searchFields corda Opcional. A lista de nomes de campo separados por vírgulas para pesquisar 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 corda 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 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 selecione em vez de $select.
semanticConfiguration (versão prévia) corda Opcional. Obrigatório se queryType="semântico". 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 corda 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éplicas, pode haver pequenas diferenças entre 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 a mesma 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 da pontuação.
$skip inteiro Opcional. O número de resultados da pesquisa a serem ignoradas. Quando chamado com POST, esse parâmetro é nomeado ignorar em vez de $skip. Esse valor não pode ser maior que 100.000. Se você precisar examinar 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) Corda Opcional. Os valores válidos são "none" e "lexicon". O padrão é "nenhum". Melhore o recall corrigindo os termos de consulta de pesquisa individuais. Você pode usá-lo em tipos de consulta simples, completos e semânticos. Se usado, o parâmetro ortográfico requer queryLanguage. Para obter mais informações e exemplos, consulte Adicionar verificação ortográfica a consultas.
$top inteiro Opcional. O número de resultados da pesquisa a serem recuperados. Esse 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).

Azure AI Search usa de 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, pesquisar documentos retornará 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" no 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 de vetor. Os parâmetros de consulta para consultas de vetor.

"valor" é 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.

"campos" é 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 da 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 direcionados no índice contêm conteúdo que pode ser reconhecido como uma resposta. A matriz @search.answers 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 em sintaxe de expressão OData para o Azure AI Search.

Exemplo: de pesquisa simples

Encontre documentos no índice usando a sintaxe de consulta simples. Essa consulta retorna hotéis em que 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"  
    }  

Ponta

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

Exemplo: de pesquisa completa do Lucene

Encontre documentos no índice usando a sintaxe da consulta Lucene (consulte sintaxe de consulta Lucene no Azure AI Search). Essa consulta retorna hotéis em que o campo de categoria contém o termo "orçamento" e todos os campos pesquisáveis que contêm a frase "renovado recentemente". Os documentos que contêm a frase "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: de 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: de pesquisa de vetor

Para um índice que tem campos de tipo Collection(Edm.Single) e uma configuração de vetor, você pode especificar parâmetros de consulta de vetor. Os parâmetros de consulta vetor incluem os campos de vetor que estão no escopo da consulta, o número "k" de acertos principais a serem retornados e uma representação de vetor da entrada da 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 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: de 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 sub-campo. As facetas contam o documento pai (Hotéis) e não os subdocumentos intermediários (Salas), 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, reduza o resultado da consulta facetada anterior depois que o usuário seleciona a Classificação 3 e a 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, defina um limite superior em termos exclusivos retornados em uma consulta. O padrão é 10, mas você pode aumentar ou diminuir esse valor usando o parâmetro de contagem no atributo faceta. Este exemplo retorna 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: de pesquisa no campo

Pesquise 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 dentro do mesmo índice. Se as descrições em inglês e francês coexistirem no mesmo documento, você poderá retornar qualquer um ou todos nos 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: de resultados de 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 em um conjunto de resultados

Recupere 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 em resultados

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

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 mais perto de um local 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 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 outro 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 í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 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 pontuação (featuresMode)

Encontre 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 serem abordados na tabela principal.

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

queryLanguage

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=semântica" 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).

Neste 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 a verificação ortográfica implementa menos variantes.

Se você especificar um código de idioma que não tenha suporte para um determinado recurso, como EN-GB com o 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ânticae Adicionar verificação 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 verificação ortográfica) está em andamento ou pendente. Incentivamos o uso de todas as variantes de idioma na tabela a seguir, mas recomendamos mais testes de idiomas de visualização para garantir que os resultados sejam válidos para o conteúdo. Idiomas com uma marca de seleção e nenhuma designação de visualização foram validados usando conjuntos de dados equivalentes, com ganho mensurável em relevância.

Idioma queryLanguage Classificador semântico e legendas Resposta semântica Corretor ortográfico
Inglês [en] en, en-US (padrão), en-GB, en-IN, en-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ênio 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)
Kannada 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)
Marata mr-IN (padrão) ✔️ (versão prévia) ✔️ (versão prévia)
Norueguês [no] não, 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)
Punjabi 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)
Tamil [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)
Telugu 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)

Consulte também