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

Importante

A correção ortográfica está em pré-visualização pública sob termos de uso suplementares. Está disponível através do portal do Azure, das APIs REST de pré-visualização e das versões beta das bibliotecas do SDK do Azure.

Você pode melhorar a recuperação corrigindo palavras em uma consulta antes que elas cheguem ao mecanismo de pesquisa. O speller parâmetro é suportado para todos os tipos de consulta de texto (não vetorial).

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 suportado.

  • Uma solicitação de consulta que tem speller=lexicon e queryLanguage definida como um idioma suportado. A verificação ortográfica funciona em cadeias de caracteres passadas no search parâmetro. Não é suportado para filtros, pesquisa difusa, pesquisa 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 cliente REST ou um código modificado para fazer chamadas REST para as APIs de visualização. Você também pode usar versões beta dos SDKs do Azure.

Biblioteca de cliente 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 interno hotels-sample 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 familiar 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 completa

A correção ortográfica ocorre em termos de consulta individuais que passam por análise de texto, e é por isso que você pode usar o parâmetro speller 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, reforço de termos

Este exemplo usa pesquisa em campo sobre o campo Categoria, com sintaxe Lucene completa e um termo de consulta com erros ortográficos. Ao incluir o ortógrafo, o erro de digitação em "Suiite" é corrigido e a consulta é bem-sucedida.

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

Esta consulta, com erros de digitação em todos os termos, exceto um, sofre correções ortográficas para retornar resultados relevantes. Para saber mais, consulte Configurar 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 suportados

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

Linguagem queryLanguage
Português [PT] 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)
Neerlandês [NL] NL, NL-BE, NL-NL (padrão)

Nota

Anteriormente, enquanto a classificação semântica estava em visualização pública, o queryLanguage parâmetro também era usado para classificação semântica. A classificação semântica é agora agnóstica em relação à linguagem.

Considerações sobre o analisador de linguagem

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

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

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

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

Nota

A consistência de linguagem entre vários valores de propriedade só é uma preocupação se você estiver usando analisadores de linguagem. Se você estiver usando analisadores agnósticos de linguagem (como palavra-chave, simples, padrão, parar, espaço em branco ou standardasciifolding.lucene), então o queryLanguage valor pode ser o que você quiser.

Embora o conteúdo de um índice de pesquisa possa ser composto em vários idiomas, a entrada de consulta é provavelmente em um. O mecanismo de pesquisa não verifica a compatibilidade do analisador de queryLanguagelinguagem e do idioma no qual o conteúdo é composto, portanto, certifique-se de definir o escopo das consultas de acordo para evitar produzir resultados incorretos.

Próximos passos