Searching a technical catalogue: Elasticsearch and ETIM at Omni-Term

An installer who types “pressure gauge 1/2” wants one thing: the right article, right away. In the Omni-Term B2B webshop installers search by article number, supplier code, brand, description or technical feature, across a catalogue from many manufacturers. This is how I built that search.

One search box, many kinds of questions

The query is analysed first. If the code recognises an article number or a supplier code, it goes straight to exact and wildcard matching on those fields, with the highest boost. If it recognises a brand name, products of that brand get priority. Everything else is treated as regular terms, searched across several fields at once: the description as exact keyword, as analysed text and as edge n-gram for prefixes, the product description, and the hierarchy from category down to product family. Searching for an old article number also finds the successor through a nested list of predecessors.

AND first, OR as the safety net

With several terms the query requires all of them to occur in the same product. If that yields too few results, the search falls back to an OR variant. The user gets precision where possible and completeness where necessary.

The Dutch compound word problem

“Installatie” must not simply match “installatiemateriaal”. The query therefore builds word boundary patterns: the term at the start, the end or the middle of a field, or after a hyphen or a period. A switch decides whether matches inside words are allowed, so precision and recall can be balanced per situation, just like the fuzziness tolerated for typos.

Boosts you tune without a deployment

The weights per field, from exact article number down to hierarchy level, are stored as settings in the database. A small management tool shows them grouped, validates changes and clears the API cache. Adjusting search behaviour takes minutes, not releases.

ETIM as a common language

ETIM is the European classification standard for technical products: every class, such as “circulation pump”, has fixed features with units and values. The manufacturers’ ETIM data lives in its own Elasticsearch index with n-gram analysers and is linked through the manufacturer’s GLN and the article’s supplier code or GTIN. That enables two things: the installer sees the technical features of an article, and the search results are grouped per ETIM class as a facet for further refinement. The link is made while enriching the results, so the base search stays fast.

What I learned

  • Measure with real search logs. A list of known searches with their expected result is the best regression test.
  • Start permissive and increase precision step by step. Rules that are too strict only show up in what users do not find.
  • Document the behaviour. The decision rules live in a document that evolves with the configuration, which makes search behaviour something you can discuss with the people at the trade counter.

Looking for a better search in your webshop or catalogue? Get in touch.