Adición de sinónimos en Azure AI Search
En un servicio de búsqueda, un mapa de sinónimos asocia términos equivalentes, expandiendo el ámbito de una consulta sin que el usuario tenga que proporcionar realmente el término. Por ejemplo, suponiendo que perro, canino y cachorro sean sinónimos, una consulta sobre canino coincidirá con un documento que contenga perro. Puede crear varios mapas de sinónimos para distintos idiomas, como versiones en inglés y francés, o bien léxicos si el contenido incluye terminología técnica, compleja o jerga.
Algunos puntos clave sobre los mapas de sinónimos:
- Un mapa de sinónimos es un recurso de nivel superior que se puede crear una vez y usar en muchos índices.
- Un mapa de sinónimos se aplica a los campos de cadena.
- Puede crear y asignar una asignación de sinónimos en cualquier momento sin interrupciones en la indexación o las consultas.
- El nivel de servicio establece los límites en cuanto a cuántos mapas de sinónimos puede crear.
- El servicio de búsqueda puede tener varios mapas de sinónimos, pero dentro de un índice, una definición de campo solo puede tener una asignación de mapa de sinónimos.
Creación de un mapa de sinónimos
Un mapa de sinónimos está formado por el nombre, el formato y las reglas que funcionan como entradas del mapa de sinónimos. El único formato admitido es solr
, y el formato solr
determina la construcción de reglas.
Para crear un mapa de sinónimos, hágalo mediante programación. Azure Portal no admite definiciones de mapa de sinónimos.
Use Crear mapa de sinónimos (API de REST) para crear un mapa de sinónimos.
POST /synonymmaps?api-version=2024-07-01
{
"name": "geo-synonyms",
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
Washington, Wash., WA => WA\n"
}
Definición de reglas
Las reglas de asignación cumplen la especificación de filtro de sinónimos de código abierto de Apache Solr, que se describe en este documento: SynonymGraphFilter. El formato solr
admite dos tipos de reglas:
equivalencia (donde los términos son sustitutos iguales en la consulta)
asignaciones explícitas (donde los términos se asignan a un término explícito)
Cada regla está delimitada por el nuevo carácter de línea (\n
). Puede definir hasta 5000 reglas por mapa de sinónimos en un servicio gratuito y 20 000 reglas por mapa en otros niveles. Cada regla puede tener hasta 20 expansiones o elementos en una regla. Para obtener más información, vea Límites de sinónimos.
Los analizadores de consultas reducen automáticamente mayúsculas o minúsculas los términos de mayúsculas y minúsculas. Para conservar caracteres especiales en la cadena, como una coma o un guión, agregue los caracteres de escape adecuados al crear el mapa de sinónimos.
Reglas de equivalencia
Las reglas para términos equivalentes se delimitan mediante comas dentro de la misma regla. En el primer ejemplo, una consulta en USA se expande a EE. UU. O "Estados Unidos" O "Estados Unidos de América". Tenga en cuenta que si quiere buscar coincidencias con una frase, la propia consulta debe ser una consulta de frases entre comillas.
En el caso de equivalencia, una consulta para perro expande la consulta para incluir también cachorro y canino.
{
"format": "solr",
"synonyms": "
USA, United States, United States of America\n
dog, puppy, canine\n
coffee, latte, cup of joe, java\n"
}
Asignación explícita
Las reglas para una asignación explícita se indican mediante una flecha =>
. Cuando se especifique, una secuencia de términos de una consulta de búsqueda que coincida con el lado izquierdo de =>
se sustituirá por las alternativas del lado derecho en el momento de la consulta.
En el caso explícito, una consulta para Washington, Wash o WA se vuelve a escribir comoWA, y el motor de consultas solo busca coincidencias en el término WA. La asignación explícita solo se aplica en la dirección especificada y no vuelve a escribir la consulta WA a Washington en este caso.
{
"format": "solr",
"synonyms": "
Washington, Wash., WA => WA\n
California, Calif., CA => CA\n"
}
Escape de caracteres especiales
Los sinónimos se analizan durante el procesamiento de consultas igual que cualquier otro término de consulta, lo que significa que las reglas para caracteres reservados y especiales se aplican a los términos del mapa de sinónimos. La lista de caracteres que requieren escape varía entre la sintaxis simple y la sintaxis completa:
- sintaxis simple
+ | " ( ) ' \
- sintaxis completa
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \ /
Para conservar los caracteres que descarta el analizador predeterminado, sustituya un analizador que los conserve. Algunas opciones incluyen analizadores de lenguaje natural de Microsoft, que conserva palabras con guiones o un analizador personalizado para patrones más complejos. Para más información, vea Términos parciales, patrones y caracteres especiales.
En el siguiente ejemplo se muestra cómo agregar a un carácter una barra diagonal inversa como carácter de escape:
{
"format": "solr",
"synonyms": "WA\, USA, WA, Washington\n"
}
Dado que la barra diagonal inversa es un carácter especial en otros lenguajes como JSON y C#, es probable que tenga que hacer doble escape. Este es un ejemplo en JSON:
{
"format":"solr",
"synonyms": "WA\\, USA, WA, Washington"
}
Administrar mapas de sinónimos
Puede actualizar un mapa de sinónimos sin interrumpir las cargas de trabajo de indización y consulta. Sin embargo, una vez que agregue un mapa de sinónimos a un campo, si elimina una asignación de sinónimos, se produce un error 404 en cualquier consulta que incluya los campos en cuestión.
La creación, actualización y eliminación de un mapa de sinónimos siempre es una operación de documento completo. No se pueden actualizar ni eliminar partes del mapa de sinónimos de forma incremental. Incluso para actualizar una sola regla es necesario volver a cargar.
Asignación de sinónimos a campos
Después de crear el mapa de sinónimos, asígnelo a un campo del índice. Para asignar asignaciones de sinónimos, hágalo mediante programación. Azure Portal no admite asociaciones de campos de mapa de sinónimos.
- Un campo debe ser de tipo
Edm.String
oCollection(Edm.String)
- Un campo debe tener
"searchable":true
- Un campo solo puede tener un mapa de sinónimos
Si el mapa de sinónimos existe en el servicio de búsqueda, se usa en la siguiente consulta, sin volver a indexar ni volver a generar.
Use el Índice Crear o Actualizar (API de REST) para modificar una definición de campo.
PUT /indexes?api-version=2024-07-01
{
"name":"hotels-sample-index",
"fields":[
{
"name":"description",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[
"en-synonyms"
]
},
{
"name":"description_fr",
"type":"Edm.String",
"searchable":true,
"analyzer":"fr.microsoft",
"synonymMaps":[
"fr-synonyms"
]
}
]
}
Consulta en campos equivalentes o asignados
Una asignación de campos de sinónimos no cambia la forma de escribir consultas. Después de la asignación de mapa de sinónimos, la única diferencia es que si existe un término de consulta en el mapa de sinónimos, el motor de búsqueda expande o vuelve a escribir el término o frase, en función de la regla.
Cómo se usan los sinónimos durante la ejecución de la consulta
Los sinónimos son una técnica de expansión de consultas que complementa el contenido de un índice con términos equivalentes, aunque solo para los campos que tienen una asignación de sinónimo. Si una consulta con ámbito de campo excluye un campo habilitado para sinónimos, no verá coincidencias del mapa de sinónimos.
En el caso de los campos habilitados para sinónimos, estos sinónimos están sujetos al mismo análisis de texto que el campo asociado. Por ejemplo, si se analiza un campo mediante el analizador estándar de Lucene, los términos de sinónimo también están sujetos al analizador estándar de Lucene en el momento de la consulta. Si quiere conservar los signos de puntuación, como los puntos o los guiones en el término sinónimo, aplique en el campo un analizador que conserve el contenido.
Internamente, la característica de sinónimos vuelve a escribir la consulta original con sinónimos mediante el operador OR. Por este motivo, el resaltado de referencias y los perfiles de puntuación tratan el término original y los sinónimos como equivalentes.
Los sinónimos solo se aplican a las consultas de texto libre y no se admiten para los filtros, las facetas, la función autocompletar o las sugerencias. La función autocompletar y las sugerencias se basan solo en el término original; las coincidencias de sinónimos no aparecen en la respuesta.
Si tiene un índice existente en un entorno de desarrollo (no producción), experimente con un pequeño diccionario para ver cómo cambia la adición de sinónimos a la experiencia de búsqueda, incluido el impacto en los perfiles de puntuación, el resaltado de aciertos y las sugerencias.
Búsquedas con caracteres comodín
Las expansiones de sinónimos no se aplican a los términos de búsqueda de carácter comodín; los prefijos, las coincidencias parciales y las regex no se expanden.
Si tiene que realizar una consulta única que aplique la expansión de sinónimos y búsquedas aproximadas, de expresiones regulares y con comodines, puede combinar las consultas utilizando la sintaxis OR. Por ejemplo, para combinar sinónimos con caracteres comodín en la sintaxis de consulta única, el término sería <query> | <query>*
.