Compartir a través de


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

Requisitos previos

  • 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 y queryLanguage establecido en un idioma compatible. El corrector ortográfico funciona con las cadenas que se pasan en el parámetro de search. 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
}

Corrección ortográfica con sintaxis de Lucene completa

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
}

Corrección ortográfica con clasificación semántica

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 obtener más información, consulte Configuración de la clasificación semántica.

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 compatibles

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 la clasificación semántica estaba en versión preliminar pública, el parámetro queryLanguage también se usaba para la clasificación semántica. La clasificación semántica ahora es independiente del lenguaje.

Consideraciones sobre el analizador de idiomas

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.

Pasos siguientes