Rechercher dans un catalogue technique : Elasticsearch et ETIM chez Omni-Term

Un installateur qui tape « manomètre 1/2 » veut une seule chose : le bon article, tout de suite. Dans la boutique B2B d’Omni-Term, les installateurs cherchent par numéro d’article, code fournisseur, marque, description ou caractéristique technique, dans un catalogue issu de nombreux fabricants. Voici comment j’ai construit cette recherche.

Une seule zone de recherche, beaucoup de types de questions

La requête est d’abord analysée. Si le code reconnaît un numéro d’article ou un code fournisseur, il passe directement à une correspondance exacte et par wildcard sur ces champs, avec le boost le plus élevé. S’il reconnaît une marque, les produits de cette marque sont favorisés. Le reste est traité comme des termes ordinaires, cherchés simultanément dans plusieurs champs : la désignation en mot-clé exact, en texte analysé et en edge n-gram pour les préfixes, la description du produit, et la hiérarchie de la catégorie jusqu’à la famille de produits. La recherche d’un ancien numéro d’article trouve aussi son successeur grâce à une liste imbriquée de prédécesseurs.

AND d’abord, OR comme filet de sécurité

Avec plusieurs termes, la requête exige qu’ils apparaissent tous dans le même produit. Si cela donne trop peu de résultats, la recherche bascule vers une variante OR. L’utilisateur obtient la précision quand c’est possible et l’exhaustivité quand c’est nécessaire.

Le problème des mots composés néerlandais

« Installatie » ne doit pas correspondre sans distinction à « installatiemateriaal ». La requête construit donc des motifs de limites de mots : le terme au début, à la fin ou au milieu d’un champ, ou après un trait d’union ou un point. Un interrupteur décide si les correspondances à l’intérieur d’un mot sont admises ; précision et rappel se règlent ainsi selon la situation, comme la tolérance aux fautes de frappe.

Des boosts réglables sans déploiement

Les poids par champ, du numéro d’article exact jusqu’au niveau hiérarchique, sont stockés comme paramètres dans la base de données. Un petit outil de gestion les affiche par groupe, valide les modifications et vide le cache de l’API. Ajuster le comportement de la recherche prend des minutes, pas des releases.

ETIM comme langage commun

ETIM est le standard européen de classification des produits techniques : chaque classe, comme « pompe de circulation », possède des caractéristiques fixes avec unités et valeurs. Les données ETIM des fabricants résident dans un index Elasticsearch dédié avec des analyseurs n-gram et sont reliées via le GLN du fabricant et le code fournisseur ou le GTIN de l’article. Cela permet deux choses : l’installateur voit les caractéristiques techniques d’un article, et les résultats sont regroupés par classe ETIM sous forme de facette pour affiner. Le lien se fait lors de l’enrichissement des résultats, pour que la recherche de base reste rapide.

Ce que j’en ai retenu

  • Mesurer avec de vrais journaux de recherche. Une liste de recherches connues avec le résultat attendu est le meilleur test de régression.
  • Commencer permissif et augmenter la précision pas à pas. Des règles trop strictes ne se voient que dans ce que les utilisateurs ne trouvent pas.
  • Documenter le comportement. Les règles de décision vivent dans un document qui évolue avec la configuration, ce qui rend le comportement de la recherche discutable avec les collaborateurs du comptoir.

Vous cherchez une meilleure recherche pour votre boutique ou votre catalogue ? Contactez-moi.