Skip to main content
Die Konfiguration des Suchmoduls ist derzeit noch nicht direkt im OSB verfügbar, weder über eine grafische Oberfläche noch über eine Code-basierte Eingabe. Aktuell kann die Einrichtung ausschließlich über WEBSALE vorgenommen werden. In Kürze wird die Möglichkeit zur Konfiguration per Code bereitgestellt. Wir bitten bis dahin noch um etwas Geduld und informieren Sie, sobald diese Option zur Verfügung steht. Bis dahin teilen Sie bitte Ihre gewünschten Einstellungen Ihrem WEBSALE-Ansprechpartner mit, damit die Anpassungen im Suchmodul für Sie vorgenommen werden können. Diese Seite führt Sie vom Zusammenspiel der beiden Module über die Konfigurationshierarchie bis zu den einzelnen Parametern. Zuerst klären wir, welche Aufgabe Importmodul und Suchmodul jeweils haben. Danach folgt der Aufbau der Konfiguration in drei Ebenen. Im Anschluss werden die Einstellungen des Importmoduls beschrieben, zum Schluss die des Suchmoduls.

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.
Ab diesen Versionen unterstützen beide Module eine dreistufige Konfigurationshierarchie: 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
Importmodul

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
Importmodul

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
Importmodul

Konfiguration des Importmoduls

Datenfeed-Konfiguration

Die Zuordnung und Verarbeitung des Feeds wird im Abschnitt datafeed der Konfiguration des Importmoduls festgelegt. Hier werden Format, Encoding, Speicherpfade und die Feldzuweisungen definiert, die der Suchindex beim Import benötigt. Standardkonfiguration
Parameterbeschreibung

Formatspezifische Parameter (format_config)

Alle Parameter, die nur für ein bestimmtes Dateiformat gelten, sind unter format_config zu finden. Bei CSV- und TSV-Feeds legt format_config neben format auch das Spaltentrennzeichen field_separator und die optionale Zeichenersetzungen character_replacements fest. Bei JSON-Feeds legt format_config die Position der Produkte und ihrer Varianten in der Datei fest.
Früher standen format, field_separator und character_replacements direkt unter datafeed. Diese Schreibweise wird aus Kompatibilitätsgründen weiterhin unterstützt, sodass bestehende Konfigurationen weiterhin funktionieren. Neue Konfigurationen nutzen hingegen format_config. Fehlt format_config oder ist es leer und steht field_separator oder character_replacements direkt unter datafeed, schreibt das Importmodul die Warnung FORMAT_STRUCTURE_DEPRECATED ins Log.
Beispielkonfiguration für einen JSON-Feed
Die Konfiguration passt zu einem Feed dieses Aufbaus:
Parameterbeschreibung
Der häufigste Fehler bei JSON-Feeds ist ein fehlendes .item in items_path. Ohne diesen Zusatz findet das Importmodul keine Produkte, wenn sie in einem Array stehen.

Subshopkonfiguration im Importmodul

In diesem Abschnitt werden alle subshopspezifischen Einstellungen für das Importmodul definiert. Jeder Subshop wird dabei als eigener Konfigurationsblock unter dem Abschnitt subshop_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
Parameterbeschreibung

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.
Optional kann eine eigene .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
Parameterbeschreibung 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.
Parameterbeschreibung
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 name und descr werden 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”.
Parameterbeschreibung Die Funktion muss zusätzlich noch für das Suchmodul aktiviert werden.

Sonderzeichen-Handhabung (punctuation_filter)

Der punctuation_filter steuert die Behandlung von Sonderzeichen in Suchanfragen und indexierten Begriffen. Damit lassen sich Suchergebnisse vereinheitlichen und Null-Treffer aufgrund unterschiedlicher Schreibweisen vermeiden, beispielsweise bei “USB-C” und “USB C”. Der Filter wird wie stopwords, synonyms und lemmatization im Importmodul konfiguriert, global unter global_configs, je Sprache unter language_configs oder je Subshop unter subshop_configs.
Die Konfiguration des punctuation_filter im Importmodul steht ab der Plugin-Version elasticsearch_manager v1.18.0 zur Verfügung. Im Suchmodul ist punctuation_filter ab websale_search v1.21.0 veraltet (deprecated) und entfällt ab websale_search v1.23.0. Bestehende Einstellungen im Suchmodul sollten deshalb in die Konfiguration des Importmoduls übernommen werden.
Änderungen an der Konfiguration des Importmoduls werden erst nach einer Neuindexierung wirksam. Das gilt auch für den punctuation_filter.
Eine Anpassung ist erforderlich, wenn vom Standardverhalten abgewichen werden soll. Dies ist beispielsweise der Fall, wenn bestimmte Sonderzeichen, wie etwa das &-Zeichen bei Markennamen, zusätzlich erhalten bleiben sollen oder wenn weitere Zeichen entfernt werden müssen.
Verarbeitungsreihenfolge
Der Filter bearbeitet einen Begriff in festen Schritten:
  1. Ersetzen durch Leerzeichen: Alle Zeichen aus replace_with_space werden durch ein Leerzeichen ersetzt.
  2. Liste anwenden: Je nach type entfernt der Filter die Zeichen aus list (Blacklist) oder er entfernt alle Zeichen außer denen aus list (Whitelist).
Weil replace_with_space zuerst greift, setzt es sich gegenüber list durch. Steht ein Zeichen in beiden Listen, wird es immer durch ein Leerzeichen ersetzt.
Blacklist: bestimmte Zeichen entfernen
Mit type: black entfernt der Filter nur die Zeichen aus list. Alle anderen Zeichen bleiben erhalten.
Entfernte Zeichen hinterlassen keine Lücke und die Wortteile werden zusammengezogen. Wenn an dieser Stelle eine Wortgrenze bleiben soll, muss das Zeichen in replace_with_space stehen.
Whitelist: nur bestimmte Zeichen behalten
Mit dem Parameter type: white behält der Filter nur Buchstaben aller Sprachen, Ziffern, Leerzeichen sowie die Zeichen aus list. Diese Whitelist ist sinnvoll, wenn die Daten viele verschiedene Sonderzeichen enthalten, von denen nur wenige für die Suche relevant sind.
Parameterbeschreibung

Kategorien

Feste Felder im Category-Index

Inhaltsseiten 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.
Feste Felder im Content-Index Standardkonfiguration des Demoshops
Parameterbeschreibung

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.
Der im vorherigen Abschnitt beschriebene 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.
Beispielkonfiguration mit drei Quellen
Parameterbeschreibung Die folgende Tabelle beschreibt nur die Parameter, die in der Listenform zusätzlich gelten. Alle übrigen Keys entsprechen dem Content-Import über die Shop-API. 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.
Ist content weder ein einzelner Block noch eine Liste, wird die komplette Content-Suche deaktiviert. Es erscheint lediglich ein Log-Eintrag, aber keine Fehlermeldung im Shop. Prüfen Sie die Einrückung der Listeneinträge daher genau.

Konfiguration des Suchmoduls

Suchvorschläge (suggest_config)

Basiskonfiguration suggest_config
Parameterbeschreibung
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.
Suchvorschläge bei mehreren Content-Quellen Nutzen Sie mehrere Content-Quellen, wird auch content im suggest_config zu einer Liste. Jede Quelle erhält einen eigenen Eintrag, dessen name mit dem Namen im Importmodul übereinstimmen muss.
Quellen, die Sie hier weglassen, liefern keine Suchvorschläge. Sie erscheinen aber weiterhin in den Suchergebnissen.

Filter (filter_config)

Basiskonfiguration filter_config
Parameterbeschreibung

Subshopkonfiguration für das Suchmodul

Die Konfiguration des Suchmoduls ist pro Subshop definiert und wird jeweils unter der Subshop-ID als Schlüssel abgelegt. Übersichtsbeispiel

Basiskonfiguration 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. Grundstruktur
Parameterbeschreibung Jede Suchart kann zusätzlich der Fallback-Suche zugeordnet werden, siehe Fallback-Suche bei null Treffern.

Fallback-Suche bei null Treffern

Eine großzügige Suche findet zwar mehr Treffer, liefert aber auch mehr unpassende. Die Fallback-Suche löst diesen Zielkonflikt, indem im Normalfall nur mit den präzisen Sucharten gesucht wird. Erst wenn diese Hauptsuche in einem Index keinen einzigen Treffer bringt, wird für diesen Index automatisch eine zweite Suche mit toleranteren Sucharten gestartet. So bleiben die Ergebnisse bei korrekter Eingabe sauber und der Kunde landet bei einem Tippfehler trotzdem nicht auf einer leeren Ergebnisseite. Die Fallback-Suche greift dabei pro Index. Liefert die Produktsuche beispielsweise keine Treffer, die Kategoriesuche aber schon, wird für die Produkte trotzdem die Fallback-Suche ausgeführt. Welche Suchart zu welcher Suche gehört, legt der Parameter fallback der jeweiligen Suchart fest:
  • Hauptsuche: alle Sucharten mit enabled: true und fallback: false
  • Fallback-Suche: alle Sucharten mit fallback: true, unabhängig von enabled
Beispielkonfiguration
Im Beispiel sucht der Shop zuerst exakt und nach Wortanfängen. Findet er nichts, sucht er erneut mit Wildcard-, N-Gram- und Fuzzy-Suche. Verhalten im Detail
  • Die Fallback-Suche startet nur bei einer Suche mit Suchbegriff. Eine Kategorieseite ohne Suchbegriff löst sie nicht aus.
  • Die Suchvorschläge nutzen die Fallback-Suche ebenfalls, wenn die Hauptsuche keine Produktvorschläge liefert.
  • Findet auch die Fallback-Suche nichts, bleibt es beim Ergebnis ohne Treffer.
  • Ist keine Suchart mit fallback: true konfiguriert, gibt es keine Fallback-Suche. Das Verhalten entspricht dann dem bisherigen.
Eine Suchart mit enabled: true und fallback: true wird nur in der Fallback-Suche, nicht in der Hauptsuche ausgeführt. Mindestens eine Suchart muss zur Hauptsuche gehören. Wenn alle aktivierten Sucharten auf fallback: true stehen, bricht die Suche mit einem Konfigurationsfehler ab.

Exakte 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. Standardkonfiguration
Parameterbeschreibung

Prä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. Standardkonfiguration
Parameterbeschreibung

Wildcard-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. Standardkonfiguration
Parameterbeschreibung

Teilwortsuche / N-Gram-Suche (ngram)

Die N-Gram-Suche liefert 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, den sogenannten N-Grammen, die während des Indexaufbaus erzeugt werden. Diese Suchart eignet sich besonders für technische Begriffe, Modellnummern, Artikelcodes oder zusammengesetzte Wörter, von denen der Nutzer häufig nur Teile kennt. Die Eingabe „AB12” findet beispielsweise auch AB1234-X oder XX-AB12-Z. Standardkonfiguration
Parameterbeschreibung

Fehlertolerante Suche & Levenshtein-Distanz (fuzzy)

Bei der Fuzzy-Suche handelt es sich um eine fehlertolerante Suchmethode, die Tippfehler oder Abweichungen in der Schreibweise ausgleicht. Grundlage ist die Levenshtein-Distanz, die ermittelt, wie viele Bearbeitungsschritte (Einfügen, Löschen, Ersetzen) erforderlich sind, um ein Wort in ein anderes zu überführen. 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.75 erhalten fuzzy-Treffer rund 75 % des Gewichts eines exakten Treffers. Höhere Werte priorisieren fuzzy stärker, 0 deaktiviert den Boost-Effekt.
  • Feldübergreifende Gewichtung: tie_breaker = 0.3 bewirkt, 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 = AUTO passt die erlaubte Edit-Distanz an die Wortlänge an. 1 bis 2 Zeichen → 0, 3 bis 5 → 1, ab 6 → 2.
Parameterbeschreibung

Datenfelder

Mit fields_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
Parameterbeschreibung

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. Standardkonfiguration
Parameterbeschreibung

Datenfelder 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). Standardkonfiguration
Parameterbeschreibung

Datenfelder 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”.
Standardkonfiguration
  • Terms-Filter farbgrp für Farben.
  • Range-Filter price fü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.
Parameterbeschreibung

Ausschluss bestimmter Produkte (filter_fields)

Standardmäßig erscheinen alle aktiven Produkte in der Suche. Der Ausschluss bestimmter Produkte erfolgt innerhalb von filter_fields. Über filter_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
Parameterbeschreibung 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
Parameterbeschreibung Reihenfolge bei gleichen Feldwerten Bei jeder Sortierung nach einem Feld, beispielsweise nach Preis oder Name, verwendet das Suchmodul die Relevanz (_score) als zweites Sortierkriterium. Produkte mit demselben Feldwert erscheinen dadurch in der Reihenfolge ihrer Relevanz. Das gilt unabhängig davon, ob die Sortieroptionen über sort_fields oder manuell im Template bereitgestellt werden. Bei der Sortierung nach Relevanz selbst entfällt das zweite Kriterium. Wie sich das auf gewichtete Produkte auswirkt, beschreibt der Abschnitt Gewichtung nach Feldwerten.

Datenfelder für Teilwortsuche (ngram_fields)

In diesem Abschnitt wird definiert, für welche Felder die Teilwortsuche (auch N-Gram-Suche genannt) 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. Standardkonfiguration
Parameterbeschreibung

Variantenfelder 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.
Parameterbeschreibung

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. Standardkonfiguration
Parameterbeschreibung

Ausnahmen 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_config toleriert, beispielsweise abhängig von der Wortlänge.
  • Keine globalen Wort-Ausschlüsse: Die Liste list ist absichtlich leer, da kritische Begriffe je Shop variieren und individuell gepflegt werden sollten.
  • Felder ohne Fuzzy: In productnumber und productid wird kein Fuzzy-Match durchgeführt, dort gilt die exakte Suche auf IDs und SKUs.
Parameterbeschreibung

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. Mit stopwords_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
Parameterbeschreibung 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.
Standardkonfiguration
Parameterbeschreibung

Hervorgehobene Produkte (promoted_products)

Mithilfe von promoted_products lassen sich bestimmte Produkte in den Suchergebnissen gezielt nach oben holen, unabhängig vom errechneten Ranking. Bei der Suche nach „Reithelm“ erscheint beispielsweise zuerst das Modell, das der Shop gerade bewerben möchte. Artikel einer Eigenmarke stehen ebenfalls vor allen anderen. Es gibt zwei Arten von Hervorhebungen:
  • Suchbegriffbasiert (query_based): gilt nur für bestimmte Suchbegriffe.
  • Global (global): gilt für alle Suchanfragen.
Bei beiden Arten lassen sich entweder einzelne Produkte (products) oder alle Produkte mit einem bestimmten Feldwert (promoted_fields) hervorheben. Ein Eintrag kann auch beides enthalten. Zusätzlich lassen sich beide Arten über Filterbedingungen und Zeiträumen einschränken. promoted_products folgt der oben beschriebenen Konfigurationshierarchie und kann global, je Sprache oder je Subshop gesetzt werden. Grundstruktur

Suchbegriffbasierte Hervorhebung (query_based)

Jeder Eintrag verknüpft eine Liste von Suchbegriffen entweder mit festen Produkten (products), mit Feldbedingungen (promoted_fields) oder mit beidem. Gibt der Kunde einen dieser Begriffe ein, werden die entsprechenden Produkte ganz oben in den Suchergebnissen angezeigt. Beispiel: feste Produkte
Beispiel: Produkte mit einem bestimmten Feldwert
Damit lassen sich bei bestimmten Suchbegriffen alle Produkte mit einem Feldwert hervorheben, beispielsweise einer Marke, ohne einzelne Produkt-IDs zu pflegen.
Der Suchbegriff muss vollständig mit einem Eintrag aus queries übereinstimmen. Verglichen wird dabei der vom Suchmodul bereits verarbeitete Suchbegriff, nicht die ursprüngliche Eingabe des Kunden. Groß- und Kleinschreibung sowie Leerzeichen am Anfang und Ende sind irrelevant. Die Suche nach „reithelm schwarz“ löst also nicht den Eintrag reithelm aus. Nehmen Sie deshalb häufige Kombinationen als eigene Einträge in queries auf.

Globale Hervorhebung (global)

Globale Einträge gelten für alle Suchanfragen. Wie bei query_based heben sie feste Produkte (products) hervor, d.h. alle Produkte, deren Feld einen bestimmten Wert enthält (promoted_fields), oder beide Kategorien. Beispiel: feste Produkte
Beispiel: Produkte mit einem bestimmten Feldwert
Das Feld aus promoted_fields muss in den display_fields stehen. Andernfalls kann das Suchmodul den Feldwert nicht vergleichen, die Hervorhebung bleibt wirkungslos und es erscheint eine Warnung im Log.

Parameterbeschreibung

Weil hide_on_filter standardmäßig auf true gesetzt ist, greift eine globale Hervorhebung auf Kategorieseiten nicht. Dort ist immer der Kategoriefilter gesetzt. Wenn Sie ein Produkt in einer bestimmten Kategorie hervorheben möchten, geben Sie die Kategorie über show_on_filters an, wie im Beispiel mit catids.
Das Suchmodul vergleicht die Zeitangaben mit der Serverzeit. Die Zeitzone in der Angabe wird ignoriert. Ein ungültiges Datum schaltet die Hervorhebung ab und erzeugt eine Warnmeldung im Log.

Reihenfolge der Ergebnisse

Sind mehrere Hervorhebungen gleichzeitig aktiv, ordnet das Suchmodul die Treffer so:
  1. Die Produkte aus products werden in der Reihenfolge der Konfiguration angezeigt. Suchbegriffbasierte Einträge stehen vor globalen. Doppelt genannte Produkte erscheinen nur einmal. Diese Produkte erscheinen auch dann, wenn sie den Suchbegriff selbst nicht enthalten. Sie erscheinen außerdem unabhängig von den gesetzten Filtern, weil das Suchmodul die Filter nur auf die regulären Treffer anwendet. Im Beispiel mit show_on_filters und catids erscheint das Produkt in den Kategorien 247439 und 408031 also auch dann, wenn es diesen Kategorien gar nicht zugeordnet ist. Das gilt ebenso, wenn bei hide_on_filter: false Filter gesetzt sind.
  2. Produkte, die eine Bedingung aus promoted_fields erfüllen.
  3. Alle übrigen Treffer in der gewählten Sortierung.
Hervorhebungen wirken nur auf der ersten Ergebnisseite. Produkte aus promoted_fields werden dabei nur innerhalb der Treffer der ersten Seite nach oben sortiert. Ein passendes Produkt, das erst auf Seite drei stünde, wird durch die Feldbedingung nicht nach vorne geholt.

Gewichtung nach Feldwerten (field_value_weights)

Hervorgehobene Produkte werden an festen Positionen ganz oben angezeigt. Oft genügt es jedoch, bestimmte Produkte im Ranking etwas zu stärken oder abzuschwächen, ohne ihre genaue Position festzulegen. Dafür gibt es field_value_weights. Damit können Sie für bestimmte Werte eines Feldes einen Gewichtungsfaktor festlegen. Das Suchmodul multipliziert anschließend die errechnete Relevanz jedes Treffers mit diesem Faktor. So rückt ein Produkt der Marke „Websale Premium“ in der Ergebnisliste nach oben, bleibt aber Teil des normalen Rankings. Die Gewichtung wirkt sich sowohl auf die Suche als auch auf die Suchvorschläge aus, weil Produkt-, Kategorie- und Inhaltsseiten-Vorschläge dieselbe Suchkonfiguration nutzen wie die jeweilige Suche. Sie lässt sich für jeden Index einzeln festlegen.
  • Produkte: direkt unter field_value_weights. Der Block folgt der oben beschriebenen Konfigurationshierarchie und kann global, je Sprache oder je Subshop gesetzt werden.
  • Kategorien und Inhaltsseiten: im jeweiligen Index unter index_configs.<index>.custom_config.field_value_weights, siehe Index-Konfiguration.
Beispielkonfiguration
Die Beispielkonfiguration funktioniert wie folgt:
  • Produkte der Marke „Websale Premium“ sowie Produkte der Warengruppe „Hardware“ erhalten die doppelte Relevanz. Sie erscheinen in den Suchergebnissen und den Produktvorschlägen deutlich weiter oben.
  • Produkte der Marke „Websale Basic“ und Produkte der Warengruppe „Zubehör“ erhalten die halbe Relevanz und erscheinen somit weiter unten in den Suchergebnissen und Produktvorschlägen.
  • Die Kategorie „Neu“ erhält in der Kategoriesuche und den Kategorievorschlägen die halbe Relevanz und die Kategorie „Sale“ nur noch ein Zehntel. Sie erscheinen deshalb deutlich weiter unten.
Die Gewichtung im Category-Index betrifft die Suche nach Kategorien, also die Kategorietreffer und Kategorievorschläge. Auf die Reihenfolge der Produkte innerhalb einer Kategorieseite hat sie keinen Einfluss.
Verhalten im Detail
  • Der Wert muss exakt mit dem Feldinhalt übereinstimmen, einschließlich Groß- und Kleinschreibung. Teilwörter oder Wildcards werden nicht unterstützt.
  • Trifft auf ein Produkt mehr als eine Gewichtung zu, werden die Faktoren miteinander multipliziert. Ein Produkt der Marke „Websale Premium“ aus der Warengruppe „Hardware“ erhält im Beispiel also die vierfache Relevanz.
  • Die Gewichtung verändert die Relevanz. Bei der Sortierung nach Relevanz bestimmt sie die Reihenfolge direkt. Wählt der Kunde eine Sortierung nach einem Feld, beispielsweise nach Preis, entscheidet zuerst der Feldwert. Haben mehrere Produkte denselben Wert, ordnet das Suchmodul sie als zweites Kriterium nach Relevanz. Bei gleichem Preis stehen gewichtete Produkte also weiter vorne.
  • Hervorgehobene Produkte stehen weiterhin vor allen gewichteten Treffern.
  • Ungültige Einträge überspringt das Suchmodul und schreibt eine Warnung ins Log, beispielsweise einen Faktor, der keine Zahl ist oder nicht größer als 0.
Parameterbeschreibung

Index-Konfiguration (index_configs)

Über index_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 für jede Produktsuche. Er ist in der Regel immer aktiv. Die inhaltliche Konfiguration, also welche Felder durchsucht, gefiltert oder angezeigt werden, erfolgt über fields_config. Über index_configs.product wird primär gesteuert, ob der Index zur Laufzeit aktiv ist. Beispielkonfiguration
Parameterbeschreibung

Autovervollständigung (Completion-Index)

Der Completion-Index dient der Autovervollständigung von Suchbegriffen. Wie beim Product-Index beschränkt sich die Konfiguration auf die reine Aktivierung des Index. Weitergehende Einstellungen, wie beispielsweise fuzziness, werden über suggest_config gesteuert. Die inhaltliche Grundlage wird beim Import festgelegt. Beispielkonfiguration
Parameterbeschreibung

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 die Suche einbezogen. Beispielkonfiguration
Parameterbeschreibung

Inhaltsseiten (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 wie „Über uns“, „AGB“ oder „Impressum“ in die Suche einbezogen. Beispielkonfiguration
Parameterbeschreibung 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.
Parameterbeschreibung
Eine Quelle erscheint nur in den Suchergebnissen, wenn der zugehörige Index in Elasticsearch tatsächlich existiert. Wenn der Import einer Quelle fehlschlägt oder die Quelle im Importmodul nicht aktiviert ist, verschwindet sie ohne Fehlermeldung aus den Ergebnissen. Aktivieren Sie eine Quelle daher immer in beiden Modulen und prüfen Sie anschließend im Shop, ob Treffer geliefert werden.
Aufbau der Suchantwort Bei mehreren Content-Quellen werden die Treffer der Suche nicht mehr flach unter content angezeigt, sondern verschachtelt pro Quelle. Unterhalb von content steht je Quelle ein Block mit den Treffern (results) und der Trefferzahl (sub_total). Die Gesamttrefferzahl wird weiterhin über alle Indizes summiert. Die WebComponents erkennen dieses Format automatisch. Wenn Sie die Suchantwort dagegen selbst auswerten, müssen Sie die Verschachtelung berücksichtigen. Ein Beispiel finden Sie unter ws-search-result.