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
equeryLanguage
definidos com um idioma com suporte. A verificação ortográfica funciona nas cadeias de caracteres passadas no parâmetrosearch
. 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 cliente REST ou versões beta dos SDKs do Azure.
Biblioteca de clientes | Versões |
---|---|
API REST | Versões 2020-06-30-Preview e posteriores. Recomendamos a API de versão prévia mais recente. 2024-05-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 |
Correção ortográfica com pesquisa simples
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=2024-05-01-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=2024-05-01-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 o classificador semântico.
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-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 o classificador semântico estava em visualização pública, o parâmetro queryLanguage
também era usado para classificação semântica. Agora, o classificador semântico é 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.