Suchen in einem technischen Katalog: Elasticsearch und ETIM bei Omni-Term

Ein Installateur, der „prescomanometer 1/2“ eintippt, will nur eines: den richtigen Artikel, und zwar sofort. Im B2B-Webshop von Omni-Term suchen Installateure nach Artikelnummer, Lieferantencode, Marke, Bezeichnung oder einem technischen Merkmal, und das in einem Katalog mit vielen Herstellern. So habe ich diese Suchfunktion aufgebaut.

Ein Suchfeld, viele Arten von Anfragen

Die Suchanfrage wird zunächst analysiert. Erkennt der Code eine Artikelnummer oder einen Lieferantencode, läuft die Anfrage direkt über exaktes und Wildcard-Matching auf diesen Feldern, mit dem höchsten Boost. Erkennt er einen Markennamen, erhalten Produkte dieser Marke Vorrang. Der Rest sind gewöhnliche Begriffe, die gleichzeitig in mehreren Feldern gesucht werden: die Bezeichnung als exaktes Keyword, als analysierter Text und als Edge-N-Gramm für Präfixe, die Produktbeschreibung und die Hierarchie von der Kategorie bis zur Produktfamilie. Die Suche nach einer alten Artikelnummer liefert über eine verschachtelte Liste von Vorgängern auch den Nachfolger.

Erst AND, OR als Auffangnetz

Bei mehreren Begriffen verlangt die Query, dass alle Begriffe im selben Produkt vorkommen. Liefert das zu wenige Ergebnisse, fällt die Suche auf eine OR-Variante zurück. So erhält der Nutzer Präzision, wo es möglich ist, und Vollständigkeit, wo es nötig ist.

Das Problem der niederländischen Komposita

„Installatie“ darf nicht einfach „installatiemateriaal“ treffen. Deshalb baut die Query Wortgrenzenmuster: der Begriff am Anfang, am Ende oder mitten in einem Feld, oder nach einem Bindestrich oder Punkt. Ein Schalter legt fest, ob Treffer mitten im Wort zugelassen sind; Precision und Recall lassen sich so je nach Situation abwägen, ebenso wie die zulässige Fuzziness für Tippfehler.

Boosts, die sich ohne Deployment anpassen lassen

Die Gewichte pro Feld, von der exakten Artikelnummer bis zur Hierarchieebene, stehen als Einstellungen in der Datenbank. Ein kleines Verwaltungstool zeigt sie gruppiert an, validiert Änderungen und leert den API-Cache. Das Suchverhalten nachzujustieren dauert so Minuten, nicht Releases.

ETIM als gemeinsame Sprache

ETIM ist der europäische Klassifikationsstandard für technische Produkte: Jede Klasse, etwa „Umwälzpumpe“, hat feste Merkmale mit Einheiten und Werten. Die ETIM-Daten der Hersteller liegen in einem eigenen Elasticsearch-Index mit N-Gramm-Analyzern und werden über die GLN des Herstellers und den Lieferantencode oder die GTIN des Artikels verknüpft. Das ermöglicht zwei Dinge: Der Installateur sieht die technischen Merkmale eines Artikels, und die Suchergebnisse werden pro ETIM-Klasse als Facette gruppiert, um weiter zu verfeinern. Die Verknüpfung erfolgt erst beim Anreichern der Ergebnisse, damit die Basissuche schnell bleibt.

Was ich daraus gelernt habe

  • Mit echten Suchlogs messen. Eine Liste bekannter Suchanfragen mit dem erwarteten Ergebnis ist der beste Regressionstest.
  • Permissiv beginnen und die Präzision Schritt für Schritt erhöhen. Zu strenge Regeln zeigen sich nur in dem, was Nutzer nicht finden.
  • Das Verhalten dokumentieren. Die Entscheidungsregeln stehen in einem Dokument, das sich mit der Konfiguration weiterentwickelt. So lässt sich das Suchverhalten mit den Mitarbeitern an der Theke besprechen.

Suchen Sie eine bessere Suchfunktion für Ihren Webshop oder Katalog? Nehmen Sie Kontakt auf.