Ingeniería

Presentación de motores multilingües en Elastic App Search

Puedes optimizar de fábrica tu motor de Elastic App Search para un idioma específico. En el lanzamiento incluiremos 13 idiomas, entre ellos: inglés, español, alemán, danés, ruso, chino, coreano y japonés.

¿Cómo modifica esto la metodología de búsqueda subyacente? ¿Cómo ayudará esto a mejorar la experiencia de búsqueda del visitante? ¿Requieren estos beneficios más configuración? Continúa leyendo para encontrar las respuestas o consulta la documentación para comenzar de inmediato.

¿El ejercicio? Analizar y tokenizar

La esencia de la búsqueda está en el análisis. El primer análisis es el que ocurre cuando se crea el índice en tu motor de búsqueda. Durante el proceso de indexación, el texto de los documentos se convierte en tokens. Luego, los tokens se organizan como términos conforme al índice.

Una vez estructurado el índice, se toma como referencia en cada consulta de búsqueda. El texto entrante se analiza, se convierte a tokens y luego se compara con los términos indexados. Mientras más se asemejen los términos de la búsqueda entrante al término indexado, más relevante será la búsqueda.

Si usabas Elasticsearch para confeccionar búsquedas por tu cuenta, es probable que necesites configurar un analizador personalizado, o varios, para manejar mejor la profundidad de tu idioma elegido. La forma en que se crean los tokens y se construyen los términos está directamente relacionada con la manera en que configuraste el analizador o el conjunto de analizadores. Si bien en los casos típicos se puede incluir un analizador de lenguaje como parte de la creación del índice básico, las configuraciones más profundas requieren el ajuste de los filtros de caracteres, un tokenizador y filtros de tokens.

App Search abstrae esta complejidad, y te brinda una solución optimizada basada en API para incorporar a tu aplicación. A fin de demostrar cómo funciona esto, podemos observar cómo los motores de App Search ahora pueden interpretar caracteres chinos.

Trabajo dinero alto

La configuración básica en un motor de App Search es Universal. Está bien configurado y es ideal para la mayoría de los casos de búsqueda. Sin embargo, cuando se especifica un idioma, el motor de App Search usará un analizador personalizado optimizado para dicho idioma.

Por ejemplo, entre las configuraciones de Universal, la búsqueda es lo suficientemente inteligente como para buscar palabras relacionadas dentro de un documento, en lugar de buscarlas por separado. Una búsqueda de “televisión” “inteligente” no buscará “televisión” y luego “inteligente” de forma independiente. Buscará “televisión inteligente”.

Si bien es útil en inglés y español, o para la correspondencia Universal de términos, podemos observar cómo esto podría llevar a búsquedas confusas en otros idiomas…

Este par de caracteres chinos representa la idea de salario:

“工资”: salario

Está compuesto por dos caracteres distintos: trabajo y dinero.

“工”: trabajo “资”: dinero

En el análisis independiente del idioma, el tokenizador separará los dos caracteres en dos tokens y luego buscará coincidencias de forma literal, sin tener en cuenta la sintaxis.

Si consideramos que un buscador chino realizó una búsqueda de “salario”, podríamos esperar que recibiera resultados para “trabajo dinero” en lugar de para “salario”. Está claro que esto puede ser muy confuso.

En inglés y español, la búsqueda proporcionará resultados que consideren la relación entre “trabajo dinero”, al igual que con “televisión inteligente”. Sin embargo, en chino, los dos caracteres representan un concepto completamente diferente.

Si se usa el analizador chino adecuado, el sistema sabrá que “工资” es un bigrama (un par de términos) y creará un token para el par de forma conjunta. De esta forma, creará el término correcto para “salario” en el índice. El bigrama “工资” estará asociado con “salario” en lugar de con “trabajo dinero”. En combinación, el token tiene mayor significado que las partes por separado.

Particularidades de la búsqueda con App Search

Configurar un idioma específico en App Search ahora es una parte simple del proceso de creación del motor.

Si creas un motor de App Search a través de la API de App Search, un “POST” de ejemplo se vería de la siguiente manera. Lo siguiente creará un motor de chino (“zh”) nuevo denominado “panda”:

curl -X POST 'https://host-xxxxxx.api.swiftype.com/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "panda",
  "language": "zh"
}'

Los idiomas coinciden con un código de idioma. Los códigos tienen un formato conforme a IETF RFC 5646 que coincide con ISO 639-1 e ISO 3166-1.

Si deseas usar una GUI para crear tu motor, el selector de idioma se encontrará disponible en la creación del motor durante el proceso de incorporación y en el dashboard:

Select language dropdown within Engine creation

Puedes ver para qué idioma está configurado un motor en la parte superior izquierda, debajo del nombre del motor. Si no ves ningún idioma, el tipo es Universal:

A Chinese language Engine named panda

Ahora que cuentas con un motor especializado en un idioma específico, ¿es necesario realizar pasos especiales? No. El análisis avanzado específico para el idioma se realiza cada vez que se indexan datos en el motor. Luego, las consultas de búsqueda en dichos idiomas aplicarán el mismo analizador relevante optimizado para el idioma que se usó durante la indexación.

Resumen

Si pudieras centrarte en tan solo un valor, tipo de datos e idioma, la búsqueda igualmente sería un desafío técnico abrumador. En la práctica, la búsqueda es muchísimo más compleja: tenemos muchos valores, muchos tipos de datos y una enorme variedad de idiomas para los que debemos brindar soporte. El objetivo final es una búsqueda independiente del idioma y del tipo de datos extremadamente precisa y con predicción del contexto mediante machine learning.

Hasta entonces, Elastic App Search es una forma efectiva de agregar a tus aplicaciones una enorme experiencia en búsqueda. Con 13 idiomas sumamente optimizados al alcance de la mano, puedes volver a centrarte en la creación de experiencias de búsqueda de calidad mediante un dashboard intuitivo y API simples, dinámicas y con buen mantenimiento. Puedes suscribirte a una prueba de 14 días para experimentar con las API y comprobar si Elastic App Search es lo indicado para ti.

Actualización*: El soporte multilingüe ahora está disponible en Elastic Site Search. Introduce tu dominio, selecciona tu idioma y permite que Site Search Crawler indexe las páginas por ti. Luego, instala el fragmento y disfruta de una experiencia de búsqueda de calidad.*