BlogMejorando las búsquedas de Liferay con sinónimos
Mejorando las búsquedas de Liferay con sinónimos
General

Mejorando las búsquedas de Liferay con sinónimos

Miguel Ángel Júlvez

Miguel Ángel Júlvez

Equipo técnico

09 de mayo de 2025
6 min lectura
Compartir:

¿Qué son los sinónimos en Elasticsearch?

En Elasticsearch, los sinónimos se utilizan para añadir equivalencias semánticas a las consultas de búsqueda. Por ejemplo, si un usuario busca "teléfono", también se pueden obtener resultados que incluyan el término "móvil" o "celular".

Tipos de Sinónimos

Bidireccionales

Los sinónimos bidireccionales son aquellos en los que los términos definidos son considerados equivalentes entre sí en ambas direcciones: "teléfono, móvil, celular". Si se busca "teléfono" aparecerán resultados que contengan "teléfono" o "móvil" o "celular".

Unidireccionales

A diferencia de los bidireccionales, en los sinónimos unidireccionales se establece una relación de equivalencia en una sola dirección: "iphone, macbook => apple". En este caso, al buscar 'iphone' o 'macbook' se encontrarán resultados que contengan 'apple' pero una búsqueda de 'apple' (manzana) no devolverá resultados con 'iphone' o 'macbook'

Creación de sinónimos en Liferay DXP

Liferay DXP dispone de la funcionalidad de conjuntos de sinónimos donde puedes añadir los diferentes sinónimos aunque tiene algunas limitaciones:

  • Solo son válidos los sinónimos bidireccionales
  • Está limitado a 10.000 sinónimos
  • No soporta todos los idiomas disponibles como por ejemplo el euskera o el gallego

En el momento de escribir este post la versión más reciente de Liferay DXP es la 2025.Q1 y la versión de Liferay Community la 7.4 GA132, por lo que estas limitaciones podrían cambiar en futuras versiones.

Creación de sinónimos en Liferay Community

Si no usas la versión DXP o no quieres tener las limitaciones que indicaba antes y quieres sacar el máximo partido en el uso de sinónimos, podemos modificar un filter de Elasticsearch ya existente en la configuración de liferay llamado 'liferay_filter_synonym_es' que es usado por el analizador 'liferay_analyzer_es', que es el analizador por defecto de todos los campos en español dentro de liferay . Date cuenta además que cada idioma tiene su propio filtro para los sinónimos.

Para modificar el filter, debemos ir a Panel de control -> Configuración del sistema -> Búsquedas - Elasticsearch 7

Y a continuación debes localizar la propiedad 'Configuraciones adicionales del índice'

Si quieres saber más sobre crear tus propios filter y analyzer de Elasticsearch en Liferay, recuerda que tenemos una formación específica sobre ello dentro del curso 'Dominando las búsquedas en Liferay'

Añadir los sinónimos directamente al filtro

Dentro de la propiedad que hemos localizado en el punto anterior, introducimos lo siguiente

{ "analysis": { "filter": { "liferay_filter_synonym_es": { "lenient": true, "synonyms": [ "teléfono, móvil, celular", "iphone, macbook => apple" ], "type": "synonym_graph" } } } } Añadir los sinónimos a Elasticsearch La opción anterior es perfectamente válida, aunque cuando tenemos que trabajar con muchos sinónimos puede ser bastante difícil de gestionar.

Por ello, la otra opción es añadir un fichero con todos los sinónimos a Elasticsearch (puedes añadir hasta 10.000 sinónimos en un fichero y puedes tener varios sinónimos de ficheros. Puedes consultar la información sobre sinónimos directamente en Elasticsearch para ver cómo procede en estos casos) y referenciarlo posteriormente desde la configuración anterior de Liferay

Añadir fichero de sinónimos a Elasticsearch

El fichero debes crearlo dentro del directorio configs de tu instalación de elasticsearch. Por ejemplo, si estás usando la imagen docker oficial docker.elastic.co/elasticsearch/elasticsearch:7.17.15 deberás crearlo dentro de /usr/share/elasticsearch/config/synonyms/synonyms_es.txt . Date cuenta que hemos creado un directorio llamado 'synonyms' también simplemente por organización

El contenido de este fichero son los diferentes sinónimos que quieres crear, cada uno de ellos en una línea diferente. Siguiendo el ejemplo anterior, quedaría

teléfono, móvil, celular iphone, macbook => apple Modificar la configuración de Liferay Dentro de la propiedad "Configuraciones adicionales del índice" que hemos localizado antes

{ "analysis": { "filter": { "liferay_filter_synonym_es": { "lenient": true, "synonyms_path": "synonyms/synonyms_es.txt", "type": "synonym_graph" } } } } Reindexar la información Una vez configurados los sinónimos, dirígete a Panel de control -> Búsquedas -> Acciones de indexación -> Todos los índices de búsqueda (reindexar).

Probando el resultado

Ten en cuenta que los sinónimos dependen siempre del contexto de búsqueda, por lo que cada sistema deberá definir sus propias reglas de equivalencia. Usarlos correctamente puede marcar una gran diferencia en la calidad de las búsquedas y mejorar significativamente la experiencia del usuario.

Enlaces de interés

  • Elasticsearch: búsqueda con sinónimos
  • Liferay DXP: conjuntos de sinónimos (Solo DXP)
Etiquetas:LiferayElasticsearchBúsquedasSinónimosDXP
Anterior

Definition of Done en diseño UI/UX: cuándo una tarea está realmente lista

Siguiente

Cómo organizar un Sistema de Diseño

¿Listo para llevar tu proyecto al siguiente nivel?

En JULDITEC transformamos ideas en soluciones digitales innovadoras. Trabajemos juntos.