Buscar en un catálogo técnico: Elasticsearch y ETIM en Omni-Term

Un instalador que teclea «prescomanometer 1/2» quiere una sola cosa: el artículo correcto, de inmediato. En la tienda B2B de Omni-Term los instaladores buscan por número de artículo, código de proveedor, marca, descripción o una característica técnica, y todo ello en un catálogo de muchos fabricantes. Así es como construí ese buscador.

Un solo campo de búsqueda, muchos tipos de consulta

La consulta se analiza primero. Si el código reconoce un número de artículo o un código de proveedor, la búsqueda va directamente a la coincidencia exacta y con comodines en esos campos, con el boost más alto. Si reconoce una marca, los productos de esa marca tienen prioridad. El resto son términos normales, que se buscan en varios campos a la vez: la descripción como keyword exacta, como texto analizado y como edge n-gram para prefijos, la descripción del producto y la jerarquía, desde la categoría hasta la familia de productos. Buscar un número de artículo antiguo devuelve también su sucesor, gracias a una lista anidada de predecesores.

Primero AND, OR como red de seguridad

Con varios términos, la consulta exige que todos aparezcan en el mismo producto. Si eso da muy pocos resultados, la búsqueda recurre a una variante OR. Así el usuario obtiene precisión donde es posible y exhaustividad donde hace falta.

El problema de las palabras compuestas en neerlandés

«Installatie» no debe coincidir sin más con «installatiemateriaal». Por eso la consulta construye patrones de límite de palabra: el término al principio, al final o en medio de un campo, o después de un guion o un punto. Un interruptor determina si se permiten coincidencias en mitad de una palabra; así la precisión y la exhaustividad se pueden equilibrar según la situación, igual que la tolerancia a errores tipográficos (fuzziness).

Boosts que se ajustan sin desplegar

Los pesos por campo, desde el número de artículo exacto hasta el nivel de jerarquía, se guardan como ajustes en la base de datos. Una pequeña herramienta de administración los muestra agrupados, valida los cambios y vacía la caché de la API. Ajustar el comportamiento del buscador lleva así minutos, no versiones.

ETIM como lenguaje común

ETIM es el estándar europeo de clasificación de productos técnicos: cada clase, como «bomba de circulación», tiene características fijas con unidades y valores. Los datos ETIM de los fabricantes están en un índice propio de Elasticsearch con analizadores n-gram y se enlazan mediante el GLN del fabricante y el código de proveedor o el GTIN del artículo. Eso permite dos cosas: el instalador ve las características técnicas de un artículo, y los resultados se agrupan por clase ETIM como faceta para seguir afinando. El enlace se hace solo al enriquecer los resultados, de modo que la búsqueda básica sigue siendo rápida.

Lo que aprendí

  • Mida con registros de búsqueda reales. Una lista de búsquedas conocidas con el resultado esperado es la mejor prueba de regresión.
  • Empiece de forma permisiva y aumente la precisión paso a paso. Las reglas demasiado estrictas solo se notan en lo que los usuarios no encuentran.
  • Documente el comportamiento. Las reglas de decisión están en un documento que evoluciona con la configuración. Eso permite hablar del comportamiento del buscador con el personal del mostrador.

¿Busca un mejor buscador para su tienda online o su catálogo? Póngase en contacto.