Importkonfiguration & Konfiguration des Suchmoduls
Damit das Suchmodul WEBSALE | search korrekt funktioniert, müssen sowohl das zugehörige Importmodul („Bereitstellen”) als auch das Suchmodul selbst konfiguriert werden. Beide Bereiche sind eng miteinander verknüpft, erfüllen jedoch unterschiedliche Aufgaben.Importmodul der Suche
Im Importmodul werden die Daten für die Suche bereitgestellt. Hier wird definiert, welche Daten importiert und verfügbar gemacht werden, beispielsweise Produkt- und Kategoriedatenfelder, JSON-Dateien für Inhalte wie AGB, Kontakt oder FAQ, Stoppwörter und andere Suchparameter. Es reicht jedoch nicht aus, die Daten lediglich bereitzustellen. Im Suchmodul selbst muss zusätzlich konfiguriert werden, ob und wie diese Daten berücksichtigt werden sollen. Werden die bereitgestellten Daten im Suchmodul nicht aktiviert oder eingebunden, haben sie keinen Einfluss auf die Suchfunktion.Suchmodul
Im Suchmodul wird festgelegt, wie die bereitgestellten Daten bei der Suche im Shop berücksichtigt werden, also zur Laufzeit. Das bedeutet, dass beispielsweise importierte Stoppwörter, Filterregeln oder Datenfelder aktiv in der Such- und Filterlogik verwendet werden. Erst die Kombination aus bereitgestellten Daten (Importmodul) und deren Aktivierung im Suchmodul stellt sicher, dass die gewünschte Suchkonfiguration vollständig und wirksam ist.Datenfeed im Dataflow Manager
Der Datenfeed bildet die Grundlage für das Importmodul. Der Datenfeed wird im Onlineservicebereich des DataflowManagers erstellt und enthält alle Produktinformationen, die im Suchindex berücksichtigt werden. Über den Datenfeed werden sämtliche Produktdaten bereitgestellt, die durchsucht, gefiltert oder sortiert werden sollen. Dazu müssen im Dataflow Manager alle relevanten Produktfelder enthalten sein, beispielsweise Name, Beschreibung, Kategorien, Preis, Lagerbestand und Attribute. Das Importmodul greift anschließend auf diesen Feed zu und wandelt die enthaltenen Daten in das interne JSON-Format für den Elasticsearch-Index um.Konfigurationshierarchie (ab v1.12.x / v.1.11.x)
Die nachfolgend beschriebene Konfigurationshierarchie steht ab den Plugin-Versionen websale_search v.1.12.x und elasticsearch_manager v1.11.x zur Verfügung. Die Merge-Logik gilt für Suchmodul und Importmodul gleichermaßen.
global_configs → language_configs → subshop_configs. Dadurch können Einstellungen einmalig auf globaler Ebene definiert und bei Bedarf auf Subshop-Ebene gezielt überschrieben werden. So lassen sich Redundanzen in der Konfiguration vermeiden.
Auf der obersten Ebene (Top-Level) werden grundsätzlich nur Infrastruktur-Aliase definiert, beispielsweise für Datenbankverbindungen oder Index-Namen. Diese werden über YAML-Aliase (*name) in die untergeordneten Blöcke eingebunden.
Aktuell gibt es hiervon noch Ausnahmen. Im
elasticsearch_manager wird datafeed weiterhin direkt auf Top-Level-Ebene konfiguriert. In websale_search gilt das gleiche für filter_config und suggest_config. Alle übrigen Einstellungen folgen dem dreistufigen Modell über global_configs, language_configs und subshop_configs.Globale Konfiguration (global_configs)
global_configs bildet das unterste Level der Hierarchie. Hier definierte Werte gelten für alle Subshops, es sei denn, sie werden auf einer übergeordneten Ebene überschrieben.
Suchmodul
Sprachkonfiguration (language_configs)
language_configs bildet das mittlere Level der Hierarchie. Hier können Konfigurationen für Sprachgruppen definiert werden, die für alle Subshops dieser Sprache gelten. Sie können nur durch explizite Subshop-Konfigurationen überschrieben werden.
Suchmodul
Subshop-Konfiguration (subshop_configs)
subshop_configs bildet das höchste Level der Hierarchie. Hier kann jeder Konfigurationsparameter für einen einzelnen Subshop explizit überschrieben werden.
Der Key language in den subshop_configs verknüpft den jeweiligen Subshop mit dem zu seiner Sprache zugehörigen language_configs-Block.
Suchmodul
Konfiguration des Importmoduls
Datenfeed-Konfiguration
Die Zuordnung und Verarbeitung des Feeds wird im Abschnittdatafeed der Konfiguration des Importmoduls festgelegt. Hier werden Format, Encoding, Speicherpfade und die Feldzuweisungen definiert, die der Suchindex beim Import benötigt.
Standardkonfiguration
Subshopkonfiguration im Importmodul
In diesem Abschnitt werden alle subshopspezifischen Einstellungen für das Importmodul definiert. Jeder Subshop wird dabei als eigener Konfigurationsblock unter dem Abschnittsubshop_configs angelegt.
Über diese Konfiguration wird festgelegt, welche Daten je Subshop importiert und bereitgestellt werden. Dadurch kann das Suchmodul später pro Subshop gezielt auf die entsprechenden Daten zugreifen und die Suche individuell steuern.
Standardkonfiguration für den Subshop Deutsch
Toleranz für das Ignorieren von Stoppwörtern (stopwords)
Stoppwörter sind wenig aussagekräftige Wörter, beispielsweise Artikel oder einfache Präpositionen, die bei der Auswertung von Suchanfragen ignoriert werden können, um irrelevante Übereinstimmungen zu reduzieren. Ob diese Ignorierlogik zur Laufzeit angewendet wird, steuert das Suchmodul. Welche Wörter als Stoppwörter behandelt, ausgenommen (Whitelist) oder zusätzlich aufgenommen (Blacklist) werden, definiert das Importmodul. In diesem Abschnitt wird festgelegt, wie die Suchfunktion mit häufig vorkommenden, bedeutungsarmen Wörtern („Stoppwörtern”) umgeht. Als Grundlage dient die Standardliste von spaCy, die gängige Funktionswörter wie der, die, das, mit, von enthält. Für optionale Whitelist- und Blacklist-Einträge kann diese Liste individuell angepasst werden:- Die Whitelist entfernt Wörter aus der spaCy-Stoppwortliste, sodass sie nicht ignoriert und bei der Suche berücksichtigt werden.
- Die Blacklist fügt Wörter zur spaCy-Liste hinzu, sodass sie bei der Suche ausgefiltert werden. Wird ein Wort blackgelistet, das bereits enthalten ist, bleibt die Wirkung unverändert.
.txt-Datei mit Stoppwörtern verwendet werden. Soll diese extern hinterlegt werden, beispielsweise auf einem Kundensystem, ist eine technische Abstimmung zur Einbindung der Datei erforderlich.
Damit die konfigurierten Stoppwörter im Suchprozess tatsächlich berücksichtigt werden, muss im Suchmodul der Parameter stopwords_filter.enabled: true aktiviert sein. Siehe Abschnitt „Stoppwort-Filter im Suchmodul”.
Standardkonfiguration stopwords
stopwords
Die Funktion muss zusätzlich noch für das Suchmodul aktiviert werden.
Synonyme (synonyms)
Die Synonymfunktion ermöglicht es, Begriffe in der Suche miteinander zu verknüpfen. Dadurch erscheinen bei der Eingabe eines Begriffs auch Treffer zu gleichbedeutenden oder verwandten Begriffen. Synonyme können entweder bidirektional („Jacke” = „Jacket”) oder unidirektional („Turniersakko” → „Turnierjacke”) definiert werden. Optional lassen sich Synonymlisten als Datei hinterlegen oder direkt in der Konfiguration pflegen. Im Standard sind keine Synonyme hinterlegt. Die Funktion wird aktiv, sobald entweder eine Synonymliste (path) angegeben oder manuelle Synonyme (clouds) definiert werden.
Beispielkonfiguration
- Beispiel 1 (
mode: bi) Die Begriffe „trenchcoat”, „kutte”, „caban”, „janker”, „mantel” und „jacke” sind bidirektional miteinander verknüpft. Eine Suche nach einem dieser Begriffe führt auch zu Treffern, die einen der anderen Begriffe enthalten. Beispielsweise liefert eine Suche nach „Janker” auch Ergebnisse mit „Mantel” oder „Trenchcoat”, und umgekehrt. - Beispiel 2 (
mode: uni) Die Begriffe „kängoro”, „kängguhru” und „kengooroo” werden einseitig auf den Begriff „känguru” gemappt. Eine Suche nach einer der Schreibvarianten führt zu Treffern mit „känguru”, nicht jedoch umgekehrt. Dieser Modus eignet sich vor allem für Tippfehler, Schreibvarianten oder vereinheitlichte Begriffe.
Hinweis: Nach Änderungen an Synonymen muss die Datenfeed-Generierung manuell gestartet werden, damit eine Neuindexierung erfolgt.
Grammatikalische Flexion (lemmatization)
In diesem Abschnitt wird festgelegt, ob und für welche Felder grammatikalische Wortformen beim Import auf ihre Grundform reduziert werden. Dadurch erkennt die Suche auch sprachliche Varianten, etwa dass „rote Hemden”, „rotes Hemd” oder „Hemd in Rot” denselben Begriff meinen. Die Funktion verbessert die sprachliche Erkennung und sorgt für natürlichere Suchergebnisse. Sie sollte für beschreibende Textfelder aktiviert werden, beispielsweise name oder descr. Für technische Felder wie product_id oder sku sollte sie deaktiviert bleiben. Standardkonfiguration- Die grammatikalische Grundform-Erkennung ist aktiviert (
enabled: true). - Es wird die deutsche Sprachlogik verwendet (
language: de). - Die Felder
nameunddescrwerden beim Import auf ihre Grundformen reduziert. - Dadurch erkennt die Suche auch grammatikalisch oder in der Wortstellung abweichende Begriffe, beispielsweise „rotes Hemd” und „Hemd in Rot”.
Die Funktion muss zusätzlich noch für das Suchmodul aktiviert werden.
Kategorien
Feste Felder im Category-IndexInhaltsseiten in den Suchindex aufnehmen
Neben Produkten und gegebenenfalls Kategorien können auch statische Inhaltsseiten in die Suche einbezogen werden, beispielsweise „Über uns”, AGB, Impressum oder Datenschutzerklärung. Dafür wird im Importmodul der Content-Import aktiviert (content.enabled) und die Anbindung an die jeweilige Shop-API (VX oder v8) konfiguriert.
Optional lassen sich die zu indexierenden Seiten gezielt einschränken, beispielsweise über included_content.
Category und Content sind spezielle Indizes, die, anders als der Produktindex, nicht frei um neue Felder erweitert werden können. Beide arbeiten mit einem festen Satz an Feldern, siehe unten. Der Parameter custom_fields dient hier ausschließlich dazu, das Elasticsearch-Mapping bestehender Felder zu überschreiben oder anzupassen, beispielsweise Analyzer oder Feldtyp. Er wurde vom Produktindex analog für andere Indizes übernommen, erweitert aber nicht die Indexierung um neue Datenfelder.
Standardkonfiguration des Demoshops
Mehrere Content-Quellen für die Suche
Mehrere Content-Quellen stehen ab den Plugin-Versionen elasticsearch_manager v1.15.0 und websale_search v1.18.0 zur Verfügung. Für die Darstellung einzelner Quellen im Frontend wird zusätzlich websale_search_webcomponents v1.7.0 benötigt.
content-Block deckt eine einzelne Quelle ab, nämlich die statischen Inhaltsseiten des Shops. Reicht das nicht aus, lässt sich content stattdessen als Liste angeben. Jeder Eintrag der Liste ist eine eigene Content-Quelle mit eigenem Suchindex, beispielsweise die statischen Seiten, ein Blog und ein Magazin.
Neben der Shop-API als Datenquelle kommt damit ein zweiter Weg hinzu. Über source: feed liest das Importmodul Inhalte aus einem externen Datenfeed ein, beispielsweise aus dem CSV-Export eines Blog-Systems.
Die bisherige Konfiguration mit einem einzelnen
content-Block funktioniert unverändert weiter. Sie müssen nur dann auf die Listenform umstellen, wenn Sie mehr als eine Content-Quelle benötigen.
Zusätzliche
custom_fields lassen sich über field_mapping ebenfalls auf Feed-Spalten mappen.
Namen der Indizes
Aus jedem Listeneintrag entsteht ein eigener Index. Der Index-Typ heißt content_<name>, der eigentliche Index-Name setzt sich aus dem Basis-Namen des Content-Index, dem Namen der Quelle und der Subshop-ID zusammen. Bei Subshop deutsch und name: blog entsteht daraus der Index deutsch_content_blog.
Diese Namen brauchen Sie an zwei Stellen wieder, nämlich in der Konfiguration des Suchmoduls und im source-Attribut der WebComponents.
Konfiguration des Suchmoduls
Suchvorschläge (suggest_config)
Basiskonfigurationsuggest_config
Grundlage der Suggest-Typen
product, category und content bilden die jeweiligen Indizes. Diese müssen zunächst im Importmodul aktiviert und konfiguriert sein, damit die entsprechenden Vorschläge zur Laufzeit verfügbar sind. Siehe Kategorien, Inhaltsseiten sowie den Completion-Index.content im suggest_config zu einer Liste. Jede Quelle erhält einen eigenen Eintrag, dessen name mit dem Namen im Importmodul übereinstimmen muss.
Filter (filter_config)
Basiskonfigurationfilter_config
Subshopkonfiguration für das Suchmodul
Die Konfiguration des Suchmoduls ist pro Subshop definiert und wird jeweils unter der Subshop-ID als Schlüssel abgelegt. ÜbersichtsbeispielBasiskonfiguration des Suchmoduls (search_config)
Die Basiskonfiguration definiert, welche Sucharten aktiv sind und wie Suchbegriffe ausgewertet werden. Über diese Einstellungen wird gesteuert, ob Suchbegriffe exakt, teilweise, unscharf oder als Wortbestandteile gefunden werden sollen. Jede Suchart kann separat aktiviert, gewichtet und kombiniert werden. GrundstrukturExakte Suche (exact)
Die exakte Suche liefert Treffer nur dann, wenn der Suchbegriff exakt mit dem gespeicherten Wort übereinstimmt. Sie bildet damit die präziseste Form der Suche und wird meist als Basis oder Ergänzung zu anderen Sucharten verwendet. Treffer aus der exakten Suche erhalten in der Regel eine höhere Relevanz, da sie eine vollständige Übereinstimmung darstellen. Diese Suchart sollte immer aktiviert bleiben, da sie sicherstellt, dass bei identischen Schreibweisen die relevantesten Ergebnisse zuerst erscheinen, beispielsweise bei exakten Produktnamen, Marken oder Artikelnummern. Über den Boost-Wert lässt sich die Gewichtung gegenüber anderen Sucharten feinjustieren. StandardkonfigurationPräfix-Suche (prefix)
Die Präfix-Suche liefert Treffer, wenn der Suchbegriff am Anfang eines Wortes steht. Sie wird typischerweise genutzt, um Treffer während der Eingabe zu ermöglichen oder um Wortanfänge zu erkennen. Die Eingabe „schn” liefert beispielsweise auch Ergebnisse wie Schneider, Schnürsenkel oder Schnalle. Diese Suchart ergänzt die exakte Suche sinnvoll, da sie flexibler auf Teilbegriffe reagiert, ohne die Präzision vollständig aufzugeben. Besonders nützlich ist sie in Kombination mit Autocomplete-Funktionen und Suggest-Komponenten. StandardkonfigurationWildcard-Suche (wildcard)
Die Wildcard-Suche findet Treffer, wenn der Suchbegriff an beliebiger Stelle innerhalb eines Wortes vorkommt. Sie ist deutlich flexibler als die Präfix-Suche, da sie auch Wortbestandteile erkennt. Die Eingabe „hose” liefert beispielsweise Treffer wie Jeanshose, Arbeitshose oder Strumpfhose. Diese Suchart eignet sich besonders für Fälle, in denen Nutzer nicht den exakten Wortanfang kennen, beispielsweise bei zusammengesetzten Begriffen, Varianten von Produktnamen oder technischen Bezeichnungen. StandardkonfigurationTeilwortsuche / N-Gram-Suche (ngram)
Die N-Gram-Suche ermöglicht Treffer, wenn ein Teil des Suchbegriffs innerhalb eines Wortes vorkommt, unabhängig davon, ob der Begriff am Anfang, in der Mitte oder am Ende steht. Sie basiert auf der Aufteilung von Wörtern in kleine Einheiten, die sogenannten N-Gramme, die während des Indexaufbaus erzeugt werden. Diese Suchart eignet sich besonders für technische Begriffe, Modellnummern, Artikelcodes oder zusammengesetzte Wörter, bei denen der Nutzer häufig nur Teile des Begriffs kennt. Die Eingabe „AB12” findet beispielsweise auch AB1234-X oder XX-AB12-Z. StandardkonfigurationFehlertolerante Suche & Levenshtein-Distanz (fuzzy)
Die Fuzzy-Suche ist eine fehlertolerante Suchmethode, die Tippfehler oder Abweichungen in der Schreibweise ausgleicht. Grundlage ist die Levenshtein-Distanz, die zählt, wie viele Bearbeitungsschritte (Einfügen, Löschen, Ersetzen) zwei Wörter voneinander trennen. Beispiele:- „Haus” → „Maus” = Distanz 1 (1 Buchstabe ersetzt)
- „Haus” → „Huas” = Distanz 2 (Buchstaben vertauscht, also zweimal ersetzt)
- „Haus” → „Hause” = Distanz 1 (ein Buchstabe eingefügt)
fuzzy steuert die globale fehlertolerante Suche auf Basis der Levenshtein-Distanz. Hier wird festgelegt, ob Fuzzy aktiv ist, welche Fehlertoleranz gilt, beispielsweise AUTO abhängig von der Wortlänge, und wie stark fuzzy Treffer im Scoring gewichtet werden (boost, tie_breaker).
Die Konfiguration wirkt grundsätzlich auf alle Suchbegriffe und Felder, sofern sie nicht durch nachgelagerte Regeln eingeschränkt wird. Siehe Ausnahmen zur globalen Fuzzy-Logik (fuzzy_filter).
Standardkonfiguration
- Fuzzy-Suche aktiviert: Fehlertolerante Matches auf Basis der Levenshtein-Distanz sind aktiv.
- Gewichtung: Mit
boost = 0.75erhalten fuzzy-Treffer rund 75 % des Gewichts eines exakten Treffers. Höhere Werte priorisieren fuzzy stärker,0deaktiviert den Boost-Effekt. - Feldübergreifende Gewichtung:
tie_breaker = 0.3bewirkt, dass zusätzliche Treffer in weiteren Feldern den Score mit etwa 30 % beitragen. Kleinere Werte dämpfen diesen Mehrfeld-Effekt, größere verstärken ihn. - Fehlertoleranz:
fuzziness = AUTOpasst die erlaubte Edit-Distanz an die Wortlänge an. 1 bis 2 Zeichen → 0, 3 bis 5 → 1, ab 6 → 2.
Datenfelder
Mitfields_config wird festgelegt, welche Datenfelder in den Suchindex aufgenommen werden und wofür sie genutzt werden, also Suche, Anzeige, Filter, Sortierung, Teilwortsuche, Varianten und Kategorien. Änderungen an diesem Block werden nach Neustart des Suchmoduls aktiv.
Grundstruktur
Datenfelder für die Suche (search_fields)
In diesem Abschnitt wird festgelegt, in welchen Feldern die Suche tatsächlich durchgeführt wird. Ohne definierte Suchfelder kann keine inhaltliche Suche stattfinden. Die Auswahl der Felder hängt vom jeweiligen Shop ab. Typischerweise werden Produktname, Beschreibung, Kategoriebezeichnungen, Marke oder Hersteller und Farbvarianten angegeben. StandardkonfigurationDatenfelder im Such-Response (display_fields)
In diesem Abschnitt wird festgelegt, welche Felder im Such-Response an das Shop-Frontend übergeben werden. Diese Felder können anschließend direkt in den WebComponents zur Anzeige verwendet werden. Standardmäßig wird nur die Produktnummer beziehungsweise der Produktindex zurückgegeben, da im Standard über diesen Index die Produktdaten aus der Shopdatenbank geladen und durch die WEBSALE Template-Engine im Frontend dargestellt werden. Wenn die Darstellung der Produkte nicht über das Laden der Shopdatenbank und somit nicht über die WEBSALE Template-Engine erfolgen soll, müssen in diesem Abschnitt alle Felder ergänzt werden, die für die Anzeige im Frontend benötigt werden, beispielsweise Preis, Marke oder Produktbild. Weitere Informationen siehe Integration in die Templates (Storefront). StandardkonfigurationDatenfelder für die Filter (filter_fields)
In diesem Abschnitt wird festgelegt, welche Filter im Such-Frontend verfügbar sind und nach welchen Feldwerten gefiltert werden kann. Das Filtersystem unterstützt verschiedene Typen von Filtern, die direkt über die Konfiguration definiert werden. Je nach Datentyp oder Anwendungsfall können so einfache Auswahlfilter, Preisbereiche oder benutzerdefinierte Filterlogiken erstellt werden. Unterstützte Filtertypen:- Terms-Filter (
terms): exakte Werte, beispielsweise Marken, Farben oder Kategorien. - Range-Filter (
range): numerische Wertebereiche, beispielsweise Preis oder Bewertung. - Custom-Filter (
custom): benutzerdefinierte Bedingungen, beispielsweise „salesrank ≤ 1000”. - Default-Filter (
default): automatisch aktive Filter, beispielsweise „nur verfügbare Produkte”.
- Terms-Filter
farbgrpfür Farben. - Range-Filter
pricefür den Preis von und bis. - Custom-Filter
salesrank, der Produkte mit einem Verkaufsrang kleiner oder gleich 1000 filtert. - Custom-Filter
rating, der Produkte mit einer durchschnittlichen Kundenbewertung größer oder gleich 4 filtert. - Custom-Filter
new_field, der Produkte filtert, die mit Neu gekennzeichnet sind. - Default-Filter
inventory, der standardmäßig alle nicht verfügbaren Produkte ausfiltert, kombiniert mit einem Custom-Filter, der es ermöglicht, diesen Default-Filter zu entfernen und damit auch nicht verfügbare Produkte anzuzeigen.
Ausschluss bestimmter Produkte (filter_fields)
Standardmäßig erscheinen alle aktiven Produkte in der Suche. Der Ausschluss bestimmter Produkte erfolgt innerhalb von filter_fields. Überfilter_fields können Produkte regelbasiert ausgeschlossen werden, ohne sie offline zu nehmen. Dieser Abschnitt beschreibt die Konfiguration im Suchmodul. Aktive Regeln filtern die betroffenen Artikel zur Laufzeit aus den Suchergebnissen.
Beispielkonfiguration filter_fields
filter_fields
Jeder Eintrag unter filter_fields ist eine Regel pro Datenfeld. Diese Regel wird bei jeder Suche geprüft und entscheidet, ob ein Produkt in die Ergebnisliste darf oder nicht.
Mehr Informationen zu den filter_fields sowie eine vollständige Übersicht der Parameter finden Sie im Abschnitt Datenfelder für die Filter (filter_fields).
Datenfelder für die Sortierung (sort_fields)
Dieser Block wird nur konfiguriert, wenn die UI-Komponente<ws-sort-box use-api="true"> verwendet wird. In diesem Fall liest die Komponente die Einträge aus sort_fields und generiert automatisch eine Select-Box mit allen konfigurierten Sortieroptionen. Änderungen an sort_fields sind dadurch sofort im Frontend sichtbar, ohne dass das Template angepasst werden muss.
Wird use-api="false" genutzt, ist sort_fields nicht erforderlich. Die Sortier-UI wird dann manuell über das Template bereitgestellt.
Mehr zur UI-Komponente ws-sort-box finden Sie hier.
Standardkonfiguration
Datenfelder für Teilwortsuche (ngram_fields)
In diesem Abschnitt wird festgelegt, für welche Felder die Teilwortsuche (N-Gram-Suche) aktiviert wird. Die Teilwortsuche ermöglicht es, auch bei unvollständigen oder teilweise passenden Suchanfragen Treffer zu finden. Die Eingabe „jack” liefert beispielsweise auch Ergebnisse wie Jacke, Jacket oder Jackett. Beim Aufbau des Suchindex werden für die hier definierten Felder sogenannte N-Gram-Token erzeugt. Dadurch können Suchbegriffe bereits während der Eingabe oder bei ungenauer Schreibweise erkannt werden. Typische Felder sind Produktname, Beschreibung oder Artikelnummern. StandardkonfigurationVariantenfelder für Filter (variant_fields)
In diesem Abschnitt wird festgelegt, welche Variantenattribute bei der Ermittlung von Filterwerten berücksichtigt werden sollen. Da die Berechnung von Filteroptionen (Aggregation) über viele Variantenprodukte performancekritisch ist, müssen die relevanten Variantenfelder hier explizit angegeben werden. Nur die in diesem Abschnitt definierten Felder fließen bei der Filterermittlung ein und beziehen dabei die Varianten eines Produkts mit ein. Standardkonfiguration- In diesem Beispiel werden die Felder Farbe (
color) und Größe (size) als Variantenfelder definiert.
Kategoriefelder (category_field)
In diesem Abschnitt wird der Feldname eingetragen, der die Kategorie-IDs (Kategorieindizes) enthält. Der hier konfigurierte Feldname wird vom Suchmodul verwendet, um den Kontext korrekt zu bestimmen, also Suchergebnisseite oder Kategorieseite, und Produkte nach einer Suche, Filterung oder Sortierung in der richtigen Kategorie zu öffnen. Der Standardwert ist in der Regel bereits gesetzt und sollte nicht geändert werden. StandardkonfigurationAusnahmen zur globalen Fuzzy-Logik (fuzzy_filter)
fuzzy_filter definiert gezielte Ausnahmen zur globalen Fuzzy-Logik.
Damit lassen sich einzelne Begriffe stets exakt suchen, also ohne Fuzzy, um Verwechslungen zu vermeiden. Ebenso lassen sich ganze Felder von Fuzzy ausschließen, beispielsweise Produkt-IDs. Dieser Abschnitt dient der Feinsteuerung, wenn das Standardverhalten zu unerwünschten Treffern führt oder bestimmte Datenfelder grundsätzlich exakt behandelt werden sollen.
Standardkonfiguration
- Fuzzy-Suche aktiviert: Tippfehler werden gemäß der globalen Fuzzy-Toleranz in der
search_configtoleriert, beispielsweise abhängig von der Wortlänge. - Keine globalen Wort-Ausschlüsse: Die Liste
listist absichtlich leer, da kritische Begriffe je Shop variieren und individuell gepflegt werden sollten. - Felder ohne Fuzzy: In
productnumberundproductidwird kein Fuzzy-Match durchgeführt, dort gilt die exakte Suche auf IDs und SKUs.
Sonderzeichen-Handhabung (punctuation_filter)
Derpunctuation_filter steuert die Behandlung von Sonderzeichen in Suchanfragen und indexierten Begriffen. Damit lassen sich Suchergebnisse vereinheitlichen und Null-Treffer durch unterschiedliche Schreibweisen vermeiden, beispielsweise USB-C, USB C und USBC.
Eine Anpassung ist erforderlich, wenn vom Standardverhalten abgewichen werden soll, etwa wenn bestimmte Sonderzeichen zusätzlich erhalten bleiben sollen wie & bei Markennamen, oder wenn weitere Zeichen entfernt werden müssen.
Standardkonfiguration
- Bindestriche (
-) und Schrägstriche (/) werden durch Leerzeichen ersetzt. „USB-C” entspricht damit „USB C” und „Herren/Hemd” entspricht „Herren Hemd”. - Unterstriche (
_), kaufmännisches Und (&) und Punkte (.) werden entfernt. „Winter_Pullover” entspricht damit „Winter Pullover”, „Jack&Jones” entspricht „Jack Jones” und „PS.5” entspricht „PS5”. - Alle anderen Zeichen bleiben erhalten.
Toleranz für das Ignorieren von Stopwörtern (stopwords_filter)
Die Konfiguration im Suchmodul legt ausschließlich fest, ob die beim Import definierte Stopwort-Liste während der Anfrageauswertung berücksichtigt wird. Mitstopwords_filter wird das Ignorieren von Stopwörtern zur Laufzeit ein- oder ausgeschaltet. Ist es aktiv, werden Begriffe aus der hinterlegten Liste vor dem Matching entfernt, während Wörter aus der Whitelist nicht entfernt und damit ganz normal gewertet werden.
Die inhaltliche Zusammenstellung der Stopwort-Liste selbst erfolgt nicht im Suchmodul, sondern vollständig im Importmodul.
Standardkonfiguration stopwords_filter
stopwords_filter
Grammatikalische Flexion (lemmatization)
In diesem Abschnitt wird festgelegt, ob und in welcher Sprache Suchbegriffe während der Suche auf ihre grammatikalische Grundform reduziert werden. Dadurch erkennt das System, dass unterschiedliche Wortformen denselben Begriff meinen, etwa „rote Hemden”, „rotes Hemd” oder „Hemd in Rot”. Die Funktion verbessert die semantische Erkennung und sorgt für natürlichere Suchergebnisse. Für technische Felder wie Produktnummern oder Modellcodes kann die Lemmatization deaktiviert bleiben, um exakte Zeichenfolgen zu wahren.Von der Verwendung der grammatikalischen Flexion (Lemmatisierung) zur Suchzeit wird abgeraten. Suchanfragen bestehen im E-Commerce typischerweise aus nur einem bis drei Wörtern und liefern damit nicht genügend Kontext für eine zuverlässige Lemmatisierung in deutscher Sprache. Dadurch kann die Nutzerabsicht verfälscht werden, beispielsweise wird aus „blau” fälschlich „blauen”, und die Suche liefert unvorhersehbare oder fehlende Ergebnisse. In der Praxis werden die relevanten Varianten bereits durch die vorhandenen Match-Strategien abgedeckt, unter anderem Exact, Prefix, N-gram, Fuzzy und Wildcard. Falls spezielle Fälle abgebildet werden müssen, ist ein Synonym-Mapping die bessere Alternative, da es kontrollierbar und nachvollziehbar ist. Die Lemmatisierung kann weiterhin zur Index-Zeit sinnvoll sein, beispielsweise bei längeren Produkttexten mit ausreichend Kontext. Sie sollte jedoch nicht bei der Verarbeitung der Suchanfrage aktiviert werden.
Index-Konfiguration (index_configs)
Überindex_configs wird pro Subshop gesteuert, welche Indizes bei der Suche zur Laufzeit aktiv sind und wie sie sich verhalten. Ein Index muss sowohl im Importmodul als auch hier im Suchmodul aktiviert sein, um wirksam zu werden.
Grundstruktur
Produkte (Product-Index)
Der Product-Index ist der Hauptindex und bildet die Grundlage jeder Produktsuche. Er ist in der Regel immer aktiv. Die inhaltliche Konfiguration, also welche Felder durchsucht, gefiltert oder angezeigt werden, erfolgt über fields_config. Überindex_configs.product wird primär gesteuert, ob der Index zur Laufzeit aktiv ist.
Beispielkonfiguration
Autovervollständigung (Completion-Index)
Der Completion-Index wird für die Autovervollständigung von Suchbegriffen verwendet. Wie beim Product-Index beschränkt sich die Konfiguration hier auf die Aktivierung des Index. Weitergehende Einstellungen wiefuzziness werden über suggest_config gesteuert, die inhaltliche Grundlage wird beim Import festgelegt.
Beispielkonfiguration
Kategorien (Category-Index)
Wenn beim Import ein Kategorie-Index angelegt wurde, kann dieser im Suchmodul pro Subshop aktiviert werden. Dadurch werden neben Produkten und gegebenenfalls Inhaltsseiten auch Kategorien in der Suche berücksichtigt. BeispielkonfigurationInhaltsseiten (Content-Index)
Wenn beim Import ein Content-Index angelegt wurde, kann dieser im Suchmodul pro Subshop aktiviert werden. Dadurch werden neben Produkten und gegebenenfalls Kategorien auch statische Inhaltsseiten in der Suche berücksichtigt, beispielsweise „Über uns”, AGB oder Impressum. Beispielkonfiguration
Mehrere Content-Quellen aktivieren
Pro Content-Quelle aus dem Importmodul brauchen Sie hier einen eigenen Eintrag. Auch im Suchmodul wird
content dazu zu einer Liste.
Aufbau der Suchantwort
Bei mehreren Content-Quellen liefert die Suche die Treffer nicht mehr flach unter
content, sondern verschachtelt pro Quelle. Unterhalb von content steht je Quelle ein Block mit den Treffern (results) und der Trefferzahl (sub_total). Die Gesamttrefferzahl total summiert weiterhin über alle Indizes.
Die WebComponents erkennen dieses Format automatisch. Werten Sie die Suchantwort dagegen selbst aus, müssen Sie die Verschachtelung berücksichtigen. Ein Beispiel finden Sie unter ws-search-result.