- nur die 8 besten Wörter zählen
- eines von mehreren Suchwörtern reicht
- bei einem Suchwort: kann Produkte verlieren
- alle passenden Wörter zählen
- alle Suchwörter müssen passen
- bei einem Suchwort: findet oft deutlich mehr
In den Shopware-Foren tauchen immer wieder dieselben Fragen auf: Warum findet die Suche Produkte, in denen das Suchwort gar nicht vorkommt? Warum entscheidet ein einzelnes „e“, ob ein Produkt gefunden wird? Und warum findet die Und-Suche mehr als die Oder-Suche? Die Antworten stehen im Quellcode. Wir haben ihn uns genau angesehen und erklären hier, was dort passiert: ohne dass Sie programmieren können müssen, aber mit genug Details, um das Verhalten Ihres Shops nachzuvollziehen.
Das gilt für die Standardsuche von Shopware 6 (MySQL-basiert, ohne Elasticsearch/OpenSearch). Wir haben den Code von Version 6.7.13.0 gelesen (die Logik ist bis 6.7.14.1 unverändert) und alle Beispiele unten in einem Shop mit Shopware 6.7.14.1 getestet.
Schritt 1: Beim Indexieren entsteht ein Wörterbuch
Shopware durchsucht nicht bei jeder Anfrage Ihre Produkttexte. Stattdessen baut es beim Indexieren aus allen Feldern, die unter Einstellungen → Suche als durchsuchbar markiert sind, ein Keyword-Wörterbuch. Dabei werden die Texte in Wörter zerlegt4:
- alles wird kleingeschrieben,
- getrennt wird an Leerzeichen und Satzzeichen,
- Bindestriche, Unterstriche, Punkte, „+“ und „@“ bleiben erhalten („Montage-Feinstrickhandschuhe“ bleibt ein Wort),
- zusammengesetzte Wörter werden nicht zerlegt. Für Shopware ist „Arbeitshandschuhe“ ein einziges Wort.
Jedes Wort wird zweimal gespeichert: einmal normal und einmal rückwärts („arbeitshandschuhe“ und „ehuhcsdnahstiebra“). Warum, zeigt Schritt 3.
Schritt 2: Aus dem Suchwort werden Muster
Tippt ein Kunde „stuhl“ ein, sucht Shopware nicht nur nach genau diesem Wort. Es erzeugt mehrere Suchmuster mit Platzhaltern, bei denen einzelne Buchstaben fehlen oder beliebig sein dürfen. Für „stuhl“ sind das unter anderem1:
| Muster | bedeutet | findet z. B. |
|---|---|---|
s__hl… | s, zwei beliebige Zeichen, hl, dann beliebig | stahl, stuhl |
stu… | beginnt mit „stu“ | stuhl, stufe, stuck |
stu_l… | stu, ein beliebiges Zeichen, l | stuhl |
Das ist Shopwares Form von Fehlertoleranz, und sie erklärt, warum „Stuhl“ auch „Stahl“ findet. Eine „echte“ Fuzzy-Suche ist das nicht, aber auch nicht null Toleranz. Dieselbe Toleranz wirkt auch am Wortende: In unserem Testshop lieferte die Suche nach „stuhl“ auch Produkte mit dem englischen Wort „Steel“ im Namen, denn „steel“ endet wie „stuhl“, nur mit zwei vertauschten Buchstaben („st“, zwei beliebige Zeichen, „l“).
Zwei Sonderfälle:
- Wörter mit Ziffern (z. B. „m12“) werden ohne Platzhalter gesucht, dafür an jeder Stelle im Wort: „m12“ findet auch „din-m12“ und „m12x40“.
- Sehr kurze Wörter (bis 2 Zeichen) werden nur als Wortanfang gesucht.
Schritt 3: Anfang oder Ende, nie die Mitte
Die Muster werden zweimal gegen das Wörterbuch geprüft: gegen die normalen und gegen die rückwärts gespeicherten Wörter2. Die normalen Muster finden Wörter, die so beginnen. Die rückwärts geprüften finden Wörter, die so enden.
Was dabei nie gefunden wird: ein Suchwort, das nur in der Mitte eines längeren Wortes steckt. Genau das war der Fall in einem viel diskutierten Forum-Thread:
| Suche | Produktname „Arbeitshandschuhe“ | Warum |
|---|---|---|
| „handschuhe“ | ✅ gefunden | „arbeitshandschuhe“ endet auf „handschuhe“ |
| „handschuh“ | ❌ nicht gefunden | steht weder am Anfang noch am Ende |
| „arbeit“ | ✅ gefunden | „arbeitshandschuhe“ beginnt mit „arbeit“ |
| „strick“ bei „Montage-Feinstrickhandschuhe“ | ❌ nicht gefunden | steckt in der Mitte |
Gerade im Deutschen mit seinen vielen zusammengesetzten Wörtern (Holzschrauben, Bürostuhl, Edelstahlspüle) ist das die häufigste Ursache für „Das Produkt ist doch da, warum findet die Suche es nicht?“.
Schritt 4: Nur die besten 8 Wörter zählen
Oft passen viele Wörter aus dem Wörterbuch auf die Muster. Shopware bewertet sie dann, vor allem danach, wie ähnlich sie dem Suchwort sind (Levenshtein-Abstand: Wie viele Buchstaben muss man ändern?). „stahl“ ist nur einen Buchstaben von „stuhl“ entfernt und wird deshalb gut bewertet.
Wichtig: Für die Oder-Suche verwendet Shopware danach nur die 8 bestbewerteten Wörter1. Sind viele Wörter gleich gut bewertet, was bei zusammengesetzten Wörtern häufig passiert, entscheidet praktisch die alphabetische Reihenfolge, welche 8 es werden. Produkte, die nur über das neunte oder zehnte Wort passen würden, fallen heraus.
Und- vs. Oder-Suche: das Gegenteil von dem, was man erwartet
Unter Einstellungen → Suche können Sie wählen, ob bei mehreren Suchwörtern alle (Und) oder eines (Oder) vorkommen müssen. Man würde erwarten, dass Oder immer mehr findet. Tatsächlich unterscheiden sich die beiden Modi aber auch darin, wie viele passende Wörter berücksichtigt werden3:
| Oder-Suche | Und-Suche | |
|---|---|---|
| Berücksichtigte Wörter | nur die 8 besten insgesamt | alle passenden, pro Suchwort |
| Mehrere Suchwörter | eines reicht | alle müssen passen |
| Folge bei einem Suchwort | kann Produkte verlieren | findet oft deutlich mehr |
Ein Shopbetreiber berichtete im Forum: Bei der Suche nach „mull“ fand die Oder-Suche 34 Artikel, die Und-Suche 846. Genau dieser Effekt.
Praxistipp: Wenn Ihre Kunden oft nur ein Wort eingeben und Sie viele zusammengesetzte Produktnamen haben, testen Sie die Und-Suche.
Warum Produkte auftauchen, in denen das Wort gar nicht steht
- Unsichtbare Felder: Das Wort steht in einem durchsuchbaren Feld, das im Frontend nicht angezeigt wird, etwa in Tags, zusätzlichen Suchbegriffen, Kategorienamen, Eigenschaften oder beim Hersteller.
- Platzhalter-Treffer: Ein Muster wie
stu…passt auf ein ganz anderes Wort in einem dieser Felder. - Veralteter Index: Das Wörterbuch wird beim Indexieren geschrieben. Bauen Sie den Suchindex nach Änderungen an Produkten oder an der Suchkonfiguration neu auf.
Welches Wort ein Produkt gefunden hat, sehen Sie in der Echtzeit-Suche unter Einstellungen → Suche, zusammen mit den Rangpunkten.
Was sich in 6.7.14 geändert hat – und was nicht
- 6.7.14.0: Die Release Notes nennen eine bessere Gewichtung, wenn der ganze Suchbegriff als Phrase im Produkt vorkommt. Das gilt nur für die Elasticsearch/OpenSearch-Suche, nicht für die Standardsuche5.
- Varianten-Bewertung: Bisher wurden die Punkte aller Varianten eines Produkts addiert, sodass Produkte mit vielen Varianten immer oben landeten. Das ist behoben (Pull Request #19139)6 und kommt laut Shopware mit einer der nächsten Versionen. Es ändert die Reihenfolge, nicht welche Produkte gefunden werden.
Die Anfang/Ende-Logik, die 8-Wörter-Grenze und das Und/Oder-Verhalten bleiben also bestehen.
Was Sie einstellen können
Ohne Programmierung, unter Einstellungen → Suche:
- Durchsuchbare Felder und Rangpunkte: Prüfen Sie, welche Felder durchsucht werden. Unsichtbare Felder mit vielen Wörtern (lange Beschreibungen, Tags) verursachen oft unerwartete Treffer.
- Und-/Oder-Suche: Probieren Sie beide mit Ihren häufigsten Suchbegriffen aus.
- Minimale Suchbegriffslänge: Bei 3 werden Begriffe wie „xl“ ignoriert.
- Ausgeschlossene Begriffe: Füllwörter, die nur Rauschen erzeugen.
- Zusätzliche Suchbegriffe pro Produkt: Tragen Sie wichtige Wortteile ein, etwa „handschuh“ bei „Arbeitshandschuhe“. Das ist der wirksamste Hebel gegen das Komposita-Problem, bei großen Sortimenten aber viel Pflege.
- Suchindex neu aufbauen, nach jeder Änderung.
Mit Entwicklung: Die Muster-Logik lässt sich per Service-Decoration anpassen. Das ist ein Eingriff in den Core-Ablauf, den man bei jedem Update prüfen muss.
Wenn die Standardsuche an ihre Grenzen kommt
Für kleinere Sortimente mit klaren Produktnamen reicht die Standardsuche mit guter Pflege oft aus. Schwierig wird es bei vielen zusammengesetzten Wörtern, Fachbegriffen, Artikelnummern und Varianten. Dann gibt es drei Wege:
- Elasticsearch/OpenSearch anbinden und die Analyse (z. B. Wortzerlegung, n-Gramme) selbst konfigurieren. Das ist mächtig, braucht aber Know-how und Betrieb.
- Suchbegriffe systematisch pflegen, z. B. per Import. Das hilft, skaliert aber schlecht.
- Eine spezialisierte Suche einsetzen.
Letzteres machen wir mit Eywora: Zusammengesetzte deutsche Wörter werden anhand eines Wörterbuchs zerlegt und auf ihren Wortstamm zurückgeführt, sodass „handschuh“ auch „Arbeitshandschuhe“ findet. Dazu kommen semantische Suche für Anfragen in Kundensprache und eine eigene Behandlung von Artikelnummern. Wann sich ein Wechsel lohnt und wann nicht, haben wir in Standardsuche vs. KI-Suche ehrlich aufgeschrieben. Warum Suchen ohne Treffer so teuer sind, steht in Das Nulltreffer-Problem.
Quellen
- Muster und Bewertung: ProductSearchTermInterpreter.php (Shopware 6.7.13.0) – https://github.com/shopware/shopware/blob/v6.7.13.0/src/Core/Content/Product/SearchKeyword/ProductSearchTermInterpreter.php ↩
- Abfrage mit normalen und rückwärts gespeicherten Wörtern: KeywordLoader.php (Shopware 6.7.13.0) – https://github.com/shopware/shopware/blob/v6.7.13.0/src/Core/Content/Product/SearchKeyword/KeywordLoader.php ↩
- Und-/Oder-Filter: ProductSearchBuilder.php (Shopware 6.7.13.0) – https://github.com/shopware/shopware/blob/v6.7.13.0/src/Core/Content/Product/SearchKeyword/ProductSearchBuilder.php ↩
- Wortzerlegung: Tokenizer.php (Shopware 6.7.13.0) – https://github.com/shopware/shopware/blob/v6.7.13.0/src/Core/Framework/DataAbstractionLayer/Search/Term/Tokenizer.php ↩
- Release Notes 6.7.14.0, Abschnitt „Whole-phrase product-search matches rank higher“ – https://github.com/shopware/shopware/blob/v6.7.14.0/RELEASE_INFO-6.7.md ↩
- Varianten-Bewertung: Pull Request #19139 – https://github.com/shopware/shopware/pull/19139 ↩




