Cómo añadir el corrector ortográfico a las consultas en Azure AI Search
Importante
La corrección ortográfica está en versión preliminar pública en los términos de uso complementarios. Está disponible a través de Azure Portal, la vista preliminar de las API de REST y las versiones beta de las bibliotecas de Azure SDK.
Se pueden mejorar las coincidencias mediante la corrección ortográfica de las palabras de una consulta antes de que lleguen al motor de búsqueda. El parámetro speller
es compatible con todos los tipos de consulta de texto (que no sean un vector).
Un servicio de búsqueda en el nivel de servicio Básico o superior en cualquier región.
Índice de búsqueda existente, con contenido en un idioma admitido.
Una solicitud de consulta que tiene
speller=lexicon
yqueryLanguage
establecido en un idioma compatible. El corrector ortográfico funciona con las cadenas que se pasan en el parámetro desearch
. No se admite para filtros, búsqueda aproximada, búsqueda con caracteres comodín, expresiones regulares o consultas vectoriales.
Use un cliente de búsqueda que admita las API de versión preliminar en la solicitud de consulta. Puede usar un cliente de REST o versiones beta de los SDK de Azure.
Biblioteca cliente | Versiones |
---|---|
REST API | Versiones 2020-06-30-Preview y posteriores. Se recomienda la API de versión preliminar más reciente. 2024-05-01-preview |
SDK de Azure para .NET | versión 11.5.0-beta.5 |
SDK de Azure para Java | versión 11.6.0-beta.5 |
Azure SDK para JavaScript | versión 11.3.0-beta.8 |
SDK de Azure para Python | versión 11.4.0b3 |
En el ejemplo siguiente se usa el ejemplo hotels-sample-index integrado para mostrar la corrección ortográfica en una consulta de texto. Sin la corrección ortográfica, la consulta devuelve cero resultados. Con la corrección, la consulta devuelve un resultado para el resort orientado a familias 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
}
La corrección ortográfica se produce en términos de consulta individuales que se someten a análisis de texto, por lo que puede usar el parámetro "speller" con algunas consultas de Lucene, pero no con otras.
- Los formularios de consulta incompatibles que omiten el análisis de texto incluyen: caracteres comodín, expresiones regulares, coincidencias parciales.
- Los formularios de consulta compatibles incluyen: búsqueda con campo, proximidad, priorización por término.
En este ejemplo se usa la búsqueda con campo en el campo Category, con la sintaxis de Lucene completa y un término de consulta mal escrito. Al incluir el corrector ortográfico, el error ortográfico en "Suiite" se corrige y la consulta se realiza correctamente.
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
}
Esta consulta, con errores tipográficos en todos los términos excepto uno, se somete a correcciones ortográficas para devolver los resultados importantes. Para más información, consulte Configuración del clasificador 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
}
Los valores que se pueden usar en queryLanguage
se pueden encontrar en la tabla siguiente, que se ha copiado de la lista de idiomas admitidos (referencia de la API de REST).
Idioma | queryLanguage |
---|---|
Inglés [EN] | EN, EN-US (valor predeterminado) |
Español [ES] | ES, ES-ES (valor predeterminado) |
Francés [FR] | FR, FR-FR (valor predeterminado) |
Alemán [DE] | DE, DE-DE (valor predeterminado) |
Neerlandés (Países Bajos) | NL, NL-BE, NL-NL (valor predeterminado) |
Nota
Anteriormente, mientras que el clasificador semántico estaba en versión preliminar pública, el parámetro queryLanguage
también se usaba para la clasificación semántica. El clasificador semántico ahora es independiente del lenguaje.
Los índices con contenido que no está en inglés suelen usar analizadores de idioma en campos que no están en inglés para aplicar las reglas lingüísticas del idioma nativo.
Al agregar un corrector ortográfico al contenido que también se somete a análisis de idioma, podrás obtener mejores resultados si usas el mismo idioma en cada paso de la indexación y el procesamiento de consultas. Por ejemplo, si el contenido de un campo se indexó mediante el analizador de idioma "fr.microsoft", las consultas y la corrección ortográfica deben usar una biblioteca o un lexicón de francés de algún tipo.
Para recapitular cómo se usan las bibliotecas de idioma en Azure AI Search:
Los analizadores de idioma se pueden invocar durante la indexación y la ejecución de consultas, y pueden ser de Apache Lucene (por ejemplo, "de.lucene") o de Microsoft ("de.microsoft").
Los léxicos de idioma invocados durante la corrección ortográfica se especifican mediante uno de los códigos de idioma de la tabla de idioma compatible.
En una solicitud de consulta, el valor asignado a queryLanguage
se aplica a speller
.
Nota
La coherencia de idioma entre varios valores de propiedad solo es un problema si usa analizadores de idioma. Si usas analizadores independientes del idioma (como keyword, simple, standard, stop, whitespace o standardasciifolding.lucene
), el valor de queryLanguage
puede ser el que quieras.
Aunque el contenido de un índice de búsqueda puede estar redactado en varios idiomas, es más probable que la entrada de la consulta lo esté en uno. El motor de búsqueda no comprueba la compatibilidad de queryLanguage
, el analizador del lenguaje ni el idioma en que está redactado el contenido, por lo que debes asegurarte de establecer el ámbito de las consultas en consecuencia para evitar que se generen resultados incorrectos.