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" son sinónimos asignados, una consulta en "canino" coincide en un documento que contiene "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 que se admite es solr
y el formato solr
determina la construcción de reglas.
Para crear un mapa de sinónimos, hágalo mediante programación. El 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 del filtro de sinónimos de código abierto de Apache Solr, que se describe en este documento: SynonymFilter. 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). 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 de USA
se expande a USA
, a "United States"
o a "United States of America"
. 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 la equivalencia, una consulta para dog
expandirá la consulta para incluir también puppy
y canine
.
{
"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 volverá a escribir como WA
, y el motor de consultas solo buscará coincidencias en el término WA
. La asignación explícita solo se aplica en la dirección especificada y, en este caso, no reescribe la consulta WA
como Washington
.
{
"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 requiere 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 producirá 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. El 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.
POST /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.
De manera interna, la característica Sinónimos reescribe 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.
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>*
.
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.