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
equeryLanguage
definida como um idioma suportado. A verificação ortográfica funciona em cadeias de caracteres passadas nosearch
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 versões beta dos SDKs do Azure.
Biblioteca de cliente | Versões |
---|---|
API REST | Versões 2020-06-30-Preview e posteriores. Recomendamos a API de visualização mais recente. 2024-05-01-pré-visualização |
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 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=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 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=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
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 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 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).
Idioma | 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 o ranker semântico estava em visualização pública, o queryLanguage
parâmetro também era usado para classificação semântica. O ranker semântico é agora agnóstico 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:
Os analisadores de linguagem podem ser invocados durante a indexação e a execução de consultas, e são Apache Lucene (por exemplo, "de.lucene") ou Microsoft ("de.microsoft").
Os léxicos de idioma invocados durante a verificação ortográfica são especificados usando um dos códigos de idioma na tabela de idiomas suportados.
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 queryLanguage
linguagem 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.