Adicionar verificação ortográfica a consultas no Azure AI Search

Importante

A correção ortográfica está em versão prévia pública sob os termos de uso complementares. Ela está disponível por meio do portal do Azure, das APIs REST da versão prévia e das versões beta das bibliotecas do SDK do Azure.

Você pode melhorar o recall corrigindo palavras em uma consulta antes que elas cheguem ao mecanismo de pesquisa. O parâmetro speller tem suporte para todos os tipos de consulta de texto (não vetor).

Pré-requisitos

  • Um serviço de pesquisa na camada Básica ou superior, em qualquer região.

  • Um índice de pesquisa existente com conteúdo em um idioma com suporte.

  • Uma solicitação de consulta que tem speller=lexicon e queryLanguage definidos com um idioma com suporte. A verificação ortográfica funciona nas cadeias de caracteres passadas no parâmetro search. Não há suporte para filtros, pesquisa difusa, pesquisa com curinga, expressões regulares ou consultas vetoriais.

Use um cliente de pesquisa que ofereça suporte a APIs de visualização na solicitação de consulta. Você pode usar um REST cliente ou código que você modificou para fazer chamadas REST para as APIs de visualização. Você também pode usar versões beta dos SDKs do Azure.

Biblioteca de clientes Versões
API REST Versões 2020-06-30-Preview e posteriores. A versão atual é 2023-10-01-Preview
SDK do Azure para .NET versão 11.5.0-beta.5
SDK do Azure para Java versão 11.6.0-beta.5
SDK do Azure para JavaScript versão 11.3.0-beta.8
SDK do Azure para Python versão 11.4.0b3

O exemplo a seguir usa o índice de exemplo de hotéis integrado para demonstrar a correção ortográfica em uma consulta de texto simples. Sem correção ortográfica, a consulta retorna zero resultados. Com a correção, a consulta retorna um resultado para o resort orientado à família de Johnson.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Correção ortográfica com Lucene completo

A correção ortográfica ocorre em termos de consulta individuais que passam por análise de texto, por isso, você pode usar o parâmetro de corretor ortográfico com algumas consultas Lucene, mas não outras.

  • Formulários de consulta incompatíveis que ignoram a análise de texto incluem: curinga, regex, difuso
  • Os formulários de consulta compatíveis incluem: pesquisa em campo, proximidade, aumento de termos

Este exemplo usa a pesquisa em campo sobre o campo Categoria, com sintaxe Lucene completa e um termo de consulta com erro de ortografia. Ao se incluir o verificador ortográfico, o erro de digitação em "Suiite" é corrigido, e a consulta é realizada com sucesso.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

Correção ortográfica com classificação semântica

Essa consulta, com erros de digitação em cada termo, exceto em um, passa por correções ortográficas para retornar resultados relevantes. Para saber mais, confira Configurar a classificação semântica.

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview     
{
    "search": "hisotoric hotell wiht great restrant nad wiifi",
    "queryType": "semantic",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Tags,Description",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

Idiomas com suporte

Os valores válidos para queryLanguage podem ser encontrados na tabela a seguir, copiados da lista de idiomas com suporte (referência da API REST).

Idioma queryLanguage
Inglês [EN] EN, EN-US (padrão)
Espanhol [ES] ES, ES-ES (padrão)
Francês [FR] FR, FR-FR (padrão)
Alemão [DE] DE, DE-DE (padrão)
Holandês [NL] NL, NL-BE, NL-NL (padrão)

Observação

Anteriormente, enquanto a classificação semântica estava em versão prévia pública, o parâmetro queryLanguage também era usado para classificação semântica. A classificação semântica agora é independente da linguagem.

Considerações sobre o analisador de idioma

Os índices que contêm conteúdo diferente do inglês geralmente usam analisadores de idioma em campos que não são do inglês para aplicar as regras linguísticas do idioma nativo.

Ao adicionar verificação ortográfica a conteúdo que também passa pela análise de idioma, você pode obter melhores resultados usando o mesmo idioma para cada etapa de indexação e processamento de consulta. Por exemplo, se o conteúdo de um campo foi indexado usando o analisador de idioma "fr.microsoft", as consultas e a verificação ortográfica devem usar um léxico francês ou algum tipo de biblioteca de idiomas.

Para recapitular como as bibliotecas de idiomas são usadas no Azure AI Search:

  • Os analisadores de idioma podem ser invocados durante a indexação e a execução da consulta e podem ser um Apache Lucene completo (por exemplo, "de.lucene") ou Microsoft ("de.microsoft).

  • Os léxicos de idiomas invocados durante a verificação ortográfica são especificados usando um dos códigos de idioma na tabela de idiomas com suporte.

Em uma solicitação de consulta, o valor atribuído a queryLanguage se aplica a speller.

Observação

A consistência de idioma em vários valores de propriedade será uma preocupação apenas se você estiver usando analisadores de idioma. Se você estiver usando analisadores independentes de idioma (como palavra-chave, simples, padrão, parar, espaço em branco ou standardasciifolding.lucene), o valor queryLanguage poderá ser o que você quiser.

Embora o conteúdo de um índice de pesquisa possa ser composto por vários idiomas, a entrada da consulta provavelmente está em apenas um. O mecanismo de pesquisa não verifica a compatibilidade do queryLanguage, do analisador de idioma e do idioma em que o conteúdo é composto, portanto, faça o escopo das consultas de forma adequada para evitar resultados incorretos.

Próximas etapas