Skip to content
B2B commerce

B2B Onsite Search: Part Numbers and Zero Results

Why zero results read as a missing range in B2B: how to set up number search, synonyms, customer-group visibility and the zero-results log that drives revenue.

13 min read B2BShopwareSucheConversionKatalog

The B2B buyer does not search — he identifies. He knows what he needs, usually more precisely than the shop itself: he types a manufacturer or part number, an EAN or the internal label from the last delivery note into the field and expects exactly one hit. If the result list stays empty, he does not conclude that the search is weak. He concludes that the range is missing — and the order goes by email to inside sales or to a competitor. According to the E-Commerce Search Usability research of the Baymard Institute, 56 percent (Baymard Institute) of the sites reviewed fail to adequately support their users' search needs. This article treats onsite search as what it is in B2B: a revenue channel with its own engineering, its own data maintenance and one of the hardest data sources a shop owns — the zero-results log.

Key takeaways

  • A buyer who types a correct part number and lands on an empty result page reads it as a statement about your range and switches channel. 56 percent (Baymard Institute) of the shops reviewed fail to support their users' search needs adequately.
  • A B2B catalog serves six input types: your own item number, the manufacturer part number, the customer's own item number, EAN or GTIN, technical specs such as M8x40 A2, and shop-floor vernacular. Each has its own data source and needs its own index treatment.
  • Numbers and words belong in separate index fields: the number field without tokenization or stemming, the full-text field analyzed. Shopware preserves five special characters by default (Shopware Developer Documentation); the slash is missing from that list.
  • Typo tolerance belongs on words, not part numbers, where a single character encodes the variant. Search exactly first, then offer narrow tolerance as a question after a zero result. Only 23 percent (Nielsen Norman Group) of search suggestions get selected.
  • Synonym lists close the language gap between catalog terms and shop-floor wording, regional variants and legacy order names. Zero results caused by permissions on blocked items should not pass silently but return an explicit note plus a route to the responsible contact.
  • The zero-result log is the toughest demand data a shop owns: export it weekly, normalize spellings and sort every line into one of three categories — data gap for the data team, language gap for catalog editing, assortment signal for purchasing.

The buyer does not search, he identifies

Onsite search in B2B is not a discovery tool, it is an addressing tool. The buyer in technical trade, in maintenance or in goods receipt has a concrete requirement and a source next to it: a data sheet, a delivery note, an open ERP window. Out of that comes a string of characters. Nielsen Norman Group observes in its usability studies that more than half (Nielsen Norman Group) of users are search-dominant: they head straight for the search field after the page loads instead of working through the navigation. Only about one fifth (Nielsen Norman Group) are link-dominant, the rest show mixed behaviour. In a B2B catalogue full of known part numbers this ratio shifts even further towards the search field — there, search is the actual landing page.

This is precisely where a surprisingly large share of shops breaks down. In its current search benchmark, the Baymard Institute issues more than 10,000 (Baymard Institute) individual performance ratings across more than 170 (Baymard Institute) sites and apps. The result: 56 percent (Baymard Institute) of sites fail to adequately support their users' search needs. On desktop, 46 percent (Baymard Institute) show mediocre or worse search UX, on mobile it is 58 percent (Baymard Institute) and in apps 64 percent (Baymard Institute). Only four (Baymard Institute) desktop sites and a single mobile site achieved a consistently strong rating in the benchmark.

The breakdown by query type is particularly revealing. Exact search — technically the easiest case, because the string is already in the catalogue — causes problems for 12 percent (Baymard Institute) of sites. For abbreviation and symbol searches, which is exactly the pattern of a part number with a hyphen, dot or slash, the share of sites with weaknesses rises to 54 percent (Baymard Institute). Compatibility searches ("fits model X") fail at 44 percent (Baymard Institute) of sites, feature searches at 39 percent (Baymard Institute). Those are exactly the query patterns that define a B2B range — and a B2B portal that does not serve them loses the buyer at the very first interaction.

Zero results is a statement about your range

A buyer who enters a correct manufacturer number and gets an empty page does not read a technical message into it, but a commercial one: "They don't carry it." He checks neither spelling nor separators, he switches channel. Every zero-results page is therefore an unintended statement about your range — and in many cases a false one, because the item is sitting in the catalogue and simply is not being found.

The query types a B2B catalogue has to master

Before thinking about relevance tuning, a sober inventory pays off: what does the buyer actually type? In B2B those are rarely aspirational terms and almost consistently identifiers from different system worlds. Each type has its own data source, its own notation and its own technical treatment. A catalogue that only knows its own part number covers perhaps a third of real-world input.

Your own part number

The number from your ERP — with and without separators. If you maintain "HTG-4711/02", then "HTG471102" and "htg 4711 02" have to resolve to the same item, without the number falling apart in full text.

Manufacturer number

The MPN is printed on the component and in the data sheet, not in your catalogue. It is frequently the very first input and needs to be maintained per item as its own searchable field.

Customer part number

The number under which your customer carries the item in his own ERP. It is customer-specific, belongs in a customer-group or account-bound field, and is the strongest loyalty feature there is.

EAN and GTIN

From the scanner, from goods receipt, from catalogue exchange. Purely numeric, without separators, and as a rule unambiguous — the ideal candidate for jumping straight to the product page.

Technical attributes

"M8x40 A2", "DN50 PN16", "1.5 mm² H07V-K": dimension, material and standard in one string. These inputs need structured attributes in the index, not just running text in the description.

Everyday language

The shop-floor term instead of the catalogue term — "pipe wrench" instead of "corner pipe wrench", "grinder" instead of "angle grinder". No technology closes this gap, only a maintained synonym list.

The order of these types is no accident: it roughly matches hit precision. Numbers are unambiguous and demand a single hit, attribute searches expect a filtered list, everyday-language input a sorted selection. Sending all six types through the same full-text search inevitably means optimising against yourself — what helps number search hurts word search and vice versa. This is most visible in the spare parts business, where compatibility and number coincide; how to model that case cleanly is shown in the article on the digital spare parts catalogue in aftersales. In technical trade, all six types occur side by side in practice.

The most important architectural step is unspectacular: numbers and words belong in separate index fields with separate analysis chains. A full-text field should split, normalise and be generous — it lowercases, removes stopwords, reduces word forms to their stem and tolerates typos. A number field should do the opposite: keep the string whole, not split it at separators, apply no stemming and rank exact hits above everything else. Uniting both goals in one field produces a compromise that disappoints both sides.

In Shopware the critical point can be named concretely. The platform maintains a list of special characters preserved during search in config/packages/shopware.yaml under shopware.search.preserved_chars; five characters are preset (Shopware Developer Documentation): hyphen, underscore, plus, dot and the at sign. The slash is not among them. A part number such as PT-64/515 is therefore split into PT, 64 and 515 when split search terms are active (Shopware Developer Documentation) — with the result that the search finds every item containing a 64 somewhere, and the item actually meant drowns in the list. With splitting disabled, PT-64/515 is searched as a whole. Anyone carrying slashes in part numbers has to extend the list:

config/packages/shopware.yaml
shopware:
  search:
    # Default: ['-', '_', '+', '.', '@']
    # Add the slash when part numbers contain it (PT-64/515)
    preserved_chars: ['-', '_', '+', '.', '@', '/']

# Rebuild the index after every change to analysis or mapping:
#   bin/console es:index

On this basis the actual search logic emerges: an upstream query router checks the input against the known number patterns of the range. If it matches, the request first runs as an exact search against the number fields — own part number, manufacturer number, EAN, customer part number. If exactly one hit comes back, jumping straight to the product page is the right answer, not a list with one element. Only when no number pattern is detected, or the exact search stays empty, does full-text search with synonyms and tolerance take over. This separation is not a backend configuration task but Shopware development on the search index and the query logic.

The silent mode error

If split search terms are enabled globally because it helps word search, it splits every part number at the same time. The symptom is treacherous: the search returns no zero results but too many results — and therefore looks healthy in monitoring. Instead of "not found", the buyer sees an unsorted list and gives up just the same. Zero-results statistics alone do not surface this case; click position does.

Typo tolerance: mandatory for words, risky for numbers

Fuzzy matching is the feature most often switched on across the board — and most often wrongly. For words it is indispensable: someone looking for "angle grinder" who types "angle grindr" should get the tool. For numbers the logic reverses. Part numbers differ systematically in exactly one character, because that character encodes the variant: length, thread, material, packaging unit. A tolerance of one character turns an unambiguous request into a list of sibling items — and in the worst case turns one hit into a wrong order that comes back as a return.

AspectNumber field (keyword)Full-text field (analyzed)
Tokenisationnone — string stays wholesplit into word tokens
Separatorspreserved (preserved_chars)treated as word boundary
Stemmingdisabledactive, language-dependent
Stopwordsdisabledremoved, language-dependent
Typo toleranceoff, or only as a second passactive, one to two characters
Synonymsgenuine number aliases onlyrange language, regionalisms
Rankingexact hit beats everythingrelevance from field boosts
Goal on a single hitjump straight to product pageresult list with refinement

The workable route is a two-stage approach instead of a global switch. Stage one searches the number exactly and without tolerance. If it stays empty, stage two runs with narrow tolerance — but with a different presentation: not as a hit, but as a query back ("Did you mean HTG-4711/03?"). That preserves unambiguity without leaving the buyer stranded on a genuine transposed digit. That suggestions are no free lunch is shown by Nielsen Norman Group: in their tests only 23 percent (Nielsen Norman Group) of the search suggestions offered were actually selected. Suggestions therefore do not replace working hit logic — they complement it.

Synonyms and the language of the range

The second large class of gaps is linguistic. The catalogue speaks manufacturer and standards language, the buyer speaks shop floor. Between "corner pipe wrench" and "pipe wrench", between "angle grinder" and "grinder", between "cable tie" and "zip tie" lies not a technical but a lexical problem. It cannot be solved by fuzzy matching or by better ranking, because the strings have nothing in common. The only robust answer is a maintained synonym list — and it does not emerge at the drawing board but from the real input of your customers.

  • Shop-floor term versus catalogue term: colloquial and brand-derived generic terms that the range carries under a technical name. The richest source is the zero-results log.
  • Regionalisms: "spanner" and "wrench", "hex key" and "Allen key", national variants in exporting ranges.
  • Legacy order labels: terms and number ranges from the predecessor system that customers keep using after a migration — they belong in the index as aliases, not in the bin.
  • Abbreviations and notation variants: "SS" and "stainless steel" and "A2", "1.5" and "1,5" — plus units with and without a space.
  • Compounds: German compounds do not fall apart by themselves. "Edelstahlschraube" should find items maintained as "Schraube, Edelstahl" — decompounding in the index or a maintained alias helps here.
  • Foreign-language input: in internationally used catalogues, English generic terms appear in the German shop and vice versa — a question of language configuration and per-language synonym maintenance.

This maintenance is range work, not an IT task — it belongs to the people who know the catalogue. It does, however, presuppose that the product data has a structure for synonyms to dock onto. The B2BEST Barometer by IFH Köln and ECC Köln shows the industry is moving here: 41 percent (IFH Köln / ECC Köln, B2BEST Barometer) of the wholesalers and manufacturers surveyed already generate product descriptions in an automated way, 37 percent (IFH Köln / ECC Köln, B2BEST Barometer) enrich product data automatically. The biggest hurdle remains integration into existing systems at 44 percent (IFH Köln / ECC Köln, B2BEST Barometer). Where the data basis is sound, synonym maintenance is a matter of hours per month; where it is missing, a clean PIM integration comes first — the fundamentals are covered in the article on product data and data quality in B2B.

Synonyms are range knowledge, not a search feature

A synonym list maps how your customers talk about your range. It ages with every new supplier, every range extension and every migration. That makes it not a project with an end date but a recurring task with a fixed source: the search queries of the past week.

Customer groups, blocked items and the index

In B2B the catalogue is rarely the same for everyone. Customer groups see different ranges, individual items are blocked for certain customers, new products initially run for selected accounts only. For search this creates two separate questions that are readily conflated: what is in the index, and what may this user see? The clean answer: the index holds the entire range with its visibility attributes, and permission is applied as a filter at query time — not through separate indices per customer group, which get more expensive with every new group.

That carries an uncomfortable consequence which has to be decided deliberately: a blocked item produces a zero-results page for the affected customer — and that, as above, is a statement about your range. Here a silent zero-results page is the worst of all options. An explicit response is better: the item exists but is not released for this account, together with a route to the responsible contact. That turns a dead end into a touchpoint. Which role and permission structures this requires is described in the article on B2B customer groups, roles and permissions in Shopware.

A second group of restrictions is legal rather than commercial. Dual-use goods, hazardous substances or country-related restrictions must not be orderable for certain recipients — and wherever sanctions screening applies, search is the first place it becomes visible. The same rule holds: the check belongs in the index as an attribute and in the query as a filter, so that result list, product page and checkout make the same statement. How to model this operationally is covered in the article on sanctions screening and export control in the B2B shop.

A zero-results page caused by a permission is not a search problem but a communication problem. The buyer should learn that the item exists — and whom to ask.

Ground rule for permission-filtered B2B catalogues

The zero-results log as the hardest data source

No other instrument in the shop delivers demand data as undistorted as the list of search queries without results. Unlike surveys, personas or range planning, it contains exclusively real, purchase-driven input from paying customers — phrased in their own language, at the moment of need. Nielsen Norman Group observed in its studies that 27 percent (Nielsen Norman Group) of failed tasks were down to users being unable to locate suitable items although those items were available on the site. Those are exactly the cases sitting in the zero-results log. Every line in it belongs to one of three categories — and each category has a different addressee.

Data gap

The item is in the range, but the number entered is not in the index — manufacturer number missing, EAN not maintained, separator split it apart. Addressee: data maintenance and index mapping. This is the most frequent and fastest-fixed category.

Language gap

The item is there, the term is missing. The customer uses the shop-floor word, a legacy order label or a regionalism. Addressee: synonym list and range language. This is where next month's lexicon supply comes from.

Range signal

The item genuinely is not in the range — but it is being asked for, repeatedly, by paying customers. Addressee: purchasing and category management. This is the most valuable category, because it describes revenue that does not exist yet.

The value of this analysis lies in its frequency. A zero-results report published once a quarter is a report; one that lands on the desk every Monday is a working tool. The preparation should be sorted by frequency and normalise queries so that "htg 4711 02", "HTG-4711/02" and "HTG471102" appear as one entry. Splitting by customer group is also worthwhile: a zero-results page for an existing customer under an annual agreement weighs more than one for an anonymous visitor. It also pays to look at queries with hits but without clicks — they are the silent variant of the same problem.

A workflow that sustains itself

Weekly export of the top 50 zero-result queries, normalisation of notations, assignment to one of the three categories, then three addressees: data maintenance corrects numbers and fields, catalogue editing adds synonyms, purchasing receives a demand list. In our experience the effort runs to one or two hours per week — for a data source that elsewhere would be commissioned as market research.

Search analytics: the metrics that explain revenue

Search is rarely measured because it is regarded as a control element rather than a channel. Treat it as a channel and the discussion changes: users who search are demand-driven and typically convert well above the visitor average. That makes the same set of metrics worthwhile that one would set up for any other channel as a matter of course. Five metrics are enough to start.

  1. Search share of revenue: what share of order value comes from sessions with at least one search? This number answers the budget question — and in B2B catalogues it regularly turns out higher than expected.
  2. Zero-results rate: share of searches without a result, separated into number and word searches. Number zero-results are almost consistently data gaps, word zero-results more often language gaps.
  3. Click position: at which rank do people click? Rank one on number searches is the target. A high average click position betrays the split part number that returns too many rather than too few hits.
  4. Refinement rate: how often does the same user rephrase the query? Every refinement is a failed first attempt — and rephrasing succeeds less often than one assumes.
  5. Search-to-order: share of searches that lead to an order in the same session. The metric everything else hangs on — and the only one that justifies the effort of synonym maintenance.

These metrics have a pleasant property: they are comparable over time and react quickly to interventions. Add a synonym group and the zero-results rate for those queries drops within days. That search UX can be improved overall is shown by Nielsen Norman Group's long-term observation: the measured success rate for shop search rose from 64 percent (Nielsen Norman Group) in 2000 via 74 percent (Nielsen Norman Group) in 2011 to 92 percent (Nielsen Norman Group) in 2017 — the result of continuous work, not of a single tool. How these values fit into a bigger picture is covered in the article on B2B shop analytics and KPIs. Anyone also watching how AI assistants read catalogues will find the context in the article on product search and AI research in B2B procurement.

Building the index for large catalogues

Beyond a certain catalogue depth, search becomes an infrastructure question. A database-backed search works reliably at a few thousand items; at six-figure item counts with variants, customer-specific prices and several number ranges per item it hits limits — both in response time and in the expressiveness of the query. Shopware integrates OpenSearch for this; the platform treats both systems the same way (Shopware Developer Documentation). The gain lies less in speed than in control: custom analyzers per field, field boosts, synonym filters and the clean separation of number and full-text fields only become configurable with it.

Two settings deserve particular attention. The first is n-gram splitting, which enables partial word search: the presets are a minimum length of four and a maximum length of five characters (Shopware Developer Documentation), adjustable via SHOPWARE_ES_NGRAM_MIN_GRAM and SHOPWARE_ES_NGRAM_MAX_GRAM. Values that are too small bloat the index and produce accidental hits, values that are too large prevent partial word search. The second is language analysis: stopwords, stemming and the decompounding of German compounds are configured per language and decide whether "Edelstahlschrauben" finds the item "Schraube, Edelstahl". Both settings only take effect after a full rebuild of the index via bin/console es:index (Shopware Developer Documentation).

From this follows the operational requirement: rebuilding the index is a plannable, repeatable procedure and belongs in the same operating routine as deployments and updates. Changing analyzers in live operation without rebuilding the index produces a search that answers according to old rules — a fault pattern that is hard to reproduce. The same discipline applies to platform upgrades, where mapping or analysis chain may change; the context is provided in the article on upgrade and maintenance strategy for B2B shops. And because the number fields come from ERP and PIM, the quality of the index hangs directly on the integrations that deliver this data.

Search relevance is engineering work

Onsite search cannot be bought in and cannot be set up once. It consists of three parts that have to be maintained separately: the catalogue with its numbers and attributes, the index with its fields and analyzers, and the query logic that decides when to search exactly and when to search tolerantly. No part works without the others — a perfect synonym list is useless if the part number falls apart in full text, and the best index stays ineffective if the manufacturer number is not maintained in the ERP at all. That 56 percent (Baymard Institute) of sites fail to cover their users' search needs is rarely down to missing technology and mostly down to missing ownership.

The entry point is smaller than the task sounds. It starts with one week of the zero-results log, an honest classification of the entries into data gap, language gap and range signal, and a check of one single technical question: what happens to a part number containing a hyphen and a slash? As a rule the answers produce a manageable list of concrete interventions — add fields, separate the analysis chain, put a router in front, maintain synonyms. Which of them make the difference in your range is what we clarify in an e-commerce consulting engagement; the implementation on index and query logic is Shopware development against a concrete, measurable goal: that the number typed in returns exactly one hit.

This article is based on data from: Baymard Institute (E-Commerce Search Usability Research and search UX benchmark), Nielsen Norman Group (Search Usability and The State of Ecommerce Search), IFH Köln / ECC Köln (B2BEST Barometer, survey of around 200 wholesalers and manufacturers) and the Shopware Developer Documentation. The figures quoted may differ by industry, range and target group; data marked (project experience) is based on our own B2B projects.

Related Articles

B2B commerce

Selling Services and Maintenance Contracts in B2B Shops

Installation, inspection and maintenance contracts as bookable items in a B2B shop: product type without stock, pricing, service data and ERP handover.

13 min read
Integration & processes

Units of Measure and Pack Sizes in B2B Online Shops

Case, pallet, roll or metre: how base, sales and order units convert in a B2B online shop, how minimum quantities apply and unit pricing stays correct.

12 min read
B2B commerce

B2B Payment Default: Automated Credit Check at Checkout

Rising insolvencies and long payment terms threaten purchase on account. How to check creditworthiness automatically and risk-based in the Shopware checkout.

12 min read