Requirements
Um die Erweiterung im vollen Umfang nutzen zu können, müssen folgende mindest Systemvoraussetzungen erfüllt sein:
- Shopware v6.5.4.0 oder höher
- PHP v8.1 oder höher
- Meilisearch v1.5 oder höher
Zusätzlich empfehlen wir folgende services:
- Redis
- RabbitMQ oder ein anderes Queuing system welches von Shopware unterstützt wird
Erstinstallation
Die Erweiterung an sich kann wie gewohnt aus dem Shopware Community Store erworben werden.
Eine andere Drittanbieter Software ist jedoch zusätzlich erforderlich - nämlich Meilisearch. Meilisearch ist eine Open-Source Suchengine welche in Rust geschrieben wurde und deswegen von Haus aus schnell und performant ist. Eine Meilisearchinstanz kann auf zwei verschiedene Arten erzeugt werden:
Self-Hosted
Es gibt die Möglichkeit, Meilisearch entweder selbst bzw. durch einen Hostingpartner Ihrer Wahl zu Verfügung zu stellen. Eine ausführliche Beschreibeung kann HIER gefunden werden
Meilisearch Cloud
Wenn das selbst hosten einer Meilisearchinstanz nicht in Frage kommt, kann man die Meilisearch Cloud nutzen. Dies hat den Vorteil, dass man sich selbst nicht um Aktualisierungen und um die einhergehenden Export/Importarbeiten kümmern muss.
Bitte bedenken Sie jedoch, dass bei dieser Variante zusätzliche Kosten enstehen die NICHT Teil des bezahlten Erweiterungspreises sind.
Initiale Einstellungen - Konfiguration Erweiterung
Um mit der Nutzung der Erweiterung starten zu können, müssen unter
Einstellungen => Meine Erweiterungen => Meilisearch für Shopware6
Die Grundeinstellungen vorgenommen werden. Bitte beachten Sie, dass die Einstellungen zum jetztigen Zeitpunkt NICHT pro Verkaufskanal gesetzt werden können. Bitte bleiben Sie im Bereich “Alle Verkaufskanäle” um Einstellungen vorzunemhen.
Allgemeine Konfiguration
Meilisearch Suche aktivieren
Mit dieser Einstellung, kann die Suche mittels Meilisearch global aktiviert/deaktivert werden. Sollte diese Einstellung auf deaktiviert sein, wird die Shopware-Standardsuche über Elasticsearch (Opensearch) durchgeführt.
Meilisearch index Prefix
Dieser Prefix dient der besseren Auffindbarkeit im Pool von Meilisearch-Indexes. Da eine Meilisearchinstanz gleichzeit mit mehreren Projekten genutzt werden könnte, dient dies der besseren Auffindbarkeit.
Meilisearch Host Adresse ohne Slash am Ende
Hier ist die URL der Meilisearchinstanz zu hinterlegen damit eine Kommunikation zwischen Shopware und Meilisearch hergestellt werden kann. ACHTUNG: Ohne slash am Ende
Meilisearch API Key
Wie in der offiziellen Dokumentation beschrieben, sollte eine Meilisearchinstanz im Produktivmodus immer mit einem API Key versehen sein um ein Abgreifen der Daten durch Dritte zu verhindern. Dieser API Key (Master key) ist hier in diesem Feld zu hinterlegen.
Batch Größe
Diese Einstellung gibt an, wieviel Entitäten auf einmal an Meilisearch gesendet werden beim Indexierungsprozess. Die größe welche verwendet werden sollte ist abhängig von der Hardware auf der die Meilisearchinstanz läuft. Da Meilisearch RAM lastig arbeitet, empfehlen wir hier den wert von 500-1000 nicht zu überschreiten Grund dafür ist nicht nur die höhere Last in der Meilisearchinstanz, sondern auch eine höhere Last in der Shopware selbst da die Daten (je nach größe) von der Datenbank abgeholt und verarbeitet werden ehe sie an Meilisearch übermittelt werden. Der Prozess läuft natürlich asynchron. Aber die Last am Server selbst bleibt bestehen.
Entitäten
Jeder Shop hat seine individuellen Custom Fields. In der Erweiterung wird das beste getan, um die Produkte mit den meisten Custom Fields zu finden und als Standard template für die Indexierung zu verwenden. Hier kann man es selbst in die Hand nehmen und die jeweiligen Entitäten einstellen welche als Template für die Indexierung herangezogen werden sollen. Das heißt nicht, dass die selben Daten für alle Entitäten im Index verwendet werden. Vielmehr bietet die Ausgewählte Entität die Grundlegende Datenstruktur für alle folgenden Entitäten wärend der Indexierung.
Z.b ein Produkt hat folgende Custom Fields:
- topSaleBadge
- subTitle
- additionalContent
Wenn ein Produkt z.b. nicht alle drei Custom Fields gesetzt hat, kann es sein, dass diese im Index fehlen. Um sicherzustellen, dass alle Felder bei allen Produkten indexiert werden, sollte das Produkt welches alle 3 Custom Fields gesetzt hat als Template eingestellt werden.
Folgende Entiäten können gesetzt werden
- Produkt welches als Datenstruktur template verwendet wird
- Kategorie welche als Datenstruktur template verwendet wird
- Hersteller welcher als Datenstruktur template verwendet wird
Geplante Aufgabe - Aufgaben Datenbank leeren
Shops welche viele Änderungen an Produkten, Kategorien und Hersteller täglich durchführen, erstellen natürlich auch Änderungen im Meilisearchindex. Dadurch kann es sein, dass die sogenannte TASK DB bei Meilisearch ein Limit erreicht und neue Änderungen nicht mehr durchführen kann. Da die TASK DB für logging recht hilfreich sein kann, kann man hier die Standardeinstellungen für den integrierten Scheduled Task setzen.
Meilisearch speicher Task logs für folgende 3 Statusmöglichkeiten ab:
- Erfolgreich
- Abgebrochen
- Fehlgeschlagen
Standardmäßig werden keine Tasks aus der Task DB durch den Scheduled Task entfernt.
Um den Nutzer die Möglichkeit zu geben dies zu steuern, gibt es auch hier Konfigurationsmöglichkeiten
Status
Auswahl der drei verschiedenen Statusmöglichkeiten ist hier möglich.
Aufgaben löschen X Tage vor Tag X
Hier kann das Zeitfenster gesetzt werden, welche Tasks aus der Task DB gelöscht werden sollen. Standardmäßig sind hier 30 Tage gesetzt. Dies bedeutet, alle Tasks aus der Task DB die älter als 30 Tage sind, werden entfernt.
Bereich Administration
Sobald alle Grundeinstellungen von dem Punkt Initiale Einstellungen getätigt wurden, kann Meilisearch weiter unter Einstellungen => Erweiterungen => Meilisearch Konfiguration
konfiguriert werden.
Die initiale Maske sieht wie folgt aus:
Bevor es los gehen kann mit den weiteren Konfigurationen, muss die Initiale Indexierung gestartet werden. In diesem Screenshot sieht man ebenfalls, dass bereits der aktuelle Verbindungsstatus zwischen Meilisearch und Shopware angezeigt wird. Sollten die API Daten nicht korrekt sein, wird man ebenfalls darauf hingewiesen was wie folgt aussieht:
Hier kann nun mit einem Klick auf den Button Meilisearch offline, API Daten prüfen
direkt in die Grundeinstellungen der Erweiterungen navigiert werden um Anpassungen vorzunehmen:
Sobald das Problem mit eventuell nicht stimmenden API Daten behoben ist, wird der Initial Indexierung
wieder aktiviert und man kann mit der Indexierung starten.
Anschließend wird das Dropdown aktiviert und man findet für jede seiner Entitäten und jede Sprache der Entitäten einen eigenen Index:
Wenn man nun auf einen Indexnamen klickt, wird die Ansicht mit den möglichen Detailansichten angezeigt:
Übersicht
Im Menüpunkt Übersicht
werden globale Daten zu den einzelnen Indizes sowie deren derzeitiger Auftragsstatus angezeigt.
Da hier der Verkaufskanal als Basis herangezogen wird, gibt es für jede Entität sowie jede Sprache der Entität eigene Indexdetails.
Vorschau
Um Sicherheit darüber zu geben, in welchen Verkaufskanälen, Sprachen und Entitäten welche Suchergebnisse erzielt werden, kann im Menüpunkt Vorschau
eine Suche durchgeführt werden. Das Dropdown Sprache ermöglicht es die Suchvorschau für verschiedene Sprachen zu testen.
Ausserdem muss ebenfalls eine Entiät (z.b. Produkt) ausgewählt werden um die Suchvorschau nutzen zu können.
Einstellungen
Der Menüpunkt Einstellungen
ist das Herzstück der Erweiterung.
Hier können die Suchresultate bis ins kleinste Detail angepasst werden.
Um Zugriff auf die Einstellungen zu erhalten, muss eine Entität ausgewählt werden wo die Einstellung schlussendlich vorgenommen werden.
Ranking Regeln Einstellungen
Mit den Ranking Regeln ist es möglich, dass interne Ranking von Meilisearch zu beeinflussen. Meilisearch arbeitet von Oben nach Unten was im Falle des Screenshots bedeutet, dass primär nach den verwendeten Suchbegriff (words) mit der höchsten Trefferquote gesucht wird.
Vom daraus enstehenden Resultat werden anschließend Schreibfehler (typo) berücksichtgt.
Eine Auflistung der einzelnen Ranking Regeln kann in der offizielen Dokumentation gefunden werden.
Des weiteren gibt es noch die Möglichhkeit, eigene Daten in die Ranking Regeln miteinzubeziehen. Dazu klickt man einfach auf Regeln hinzufügen
wodurch sich ein neues Fenster öffnet, wo von der Entität (hier Produkt) Felder hinzugefügt werden können:
Wenn ein neues Feld hinzugefügt wurde, kann man es anschließend in der Ranking Rules Hierachie einordnen. Bei neu hinzugefügten Ranking Regeln kann nach Aufsteigend oder Absteigend sortiert werden bzw die neue Ranking Regel wieder entfernt werden.
Mittels Drag-and-Drop lassen sich die einzelnen Ranking Regeln an andere Positionen setzen. Nachdem die Ranking Rules angepasst wurden ist es erforderlich die Einstellungen an die Meilisearchinstanz mit einem Klick auf den Button Ranking Regeln updaten
zu übermitteln. Andernfalls werden die Einstellungen nicht übernommen.
Typo Tolerance Einstellungen
Eine der Stärken von Meilisearch ist die Typo Tolerance. Dies bedeutet, dass bei einem Suchbegriff Schreibfehler gemacht werden können/dürfen und das Suchresultat dennoch richtige Ergebnisse liefert. Zum Beispiel kann man nach Fernsher
suchen und dennoch Fernseher
finden.
Dieses Verhalten kann hier beeinflusst werden indem man definiert, ab welcher Wortlänge 1x Schreibfehler und ab welcher Wortlänge 2x Schreibfehler akzeptiert werden sollen.
Nach der Anpassung der Werte, muss mit Klick auf Update Typo Tolerance Einstellungen
die Änderung in die Meilisearchinstanz übermittelt werden.
Index Einstellungen
Auf der Suchseite werden normalerweise X Resultate zur Verfügung gestellt. Hier kann man einen maximal Wert der gelieferten Resultate setzen welche auf der Suchseite zur Verfügung stehen.
Nach der Anpassung der Werte, muss mit Klick auf Update Index Einstellungen
die Änderung in die Meilisearchinstanz übermittelt werden.
Kaskadierende Suche aktivieren
Dieses Setting - insofern aktiv - ermöglicht es, einen Suchbegriff der aus mehreren Wörtern besteht in einzelne Suchanfragen umzuwandeln.
Zum Beispiel, wenn ein Nutzer nach Fernseher Smart TV
sucht, wird wie folgt vorgegangen:
Schritt 1 => Suche nach Fernseher Smart TV
Wenn kein Ergebnis zur Verfügung steht, wird das Wort Fernseher entfernt, andernfalls wird das Resultat geliefert
Schritt 2 => Suche nach Smart TV
Wenn kein Ergebnis zur Verfügung steht, wird das Wort Smart entfernt, andernfalls wird das Resultat geliefert
Schritt 3 => Suche nach TV
Wenn kein Ergebnis zur Verfügung steht, wird keine Ergbnisse gefunden zurück geliefert
Gefahrenzone
In diesem Bereich lassen sich nur Endgültige Aufgaben erledigen. Derzeit gibt es hier zwei Funktionen:
- Indizes erzeugen/updaten
Dies bewirkt, dass sämtliche Einträge welche in der Shopware zur gewählten Entität neu in den Meilisearchindex übermittelt werden
- Index löschen
Bei Klick auf Index löschen
wird der Index in der Meilisearchinstanz gelöscht und in der Shopware wird die Referenz zu diesem Index gelöscht.
Synonyme
In manchen Fällen ist es so, dass für einen Webshop betreiber ein Wort dasselbe für mehrere andere Wörter bedeutet oder umgekehrt. Aus diesem Grund ist es auch in Meilisearch möglich Synonyme zu definieren um das zu gewährleisten.
Neue Synonyme hinzufügen
Um neue Synonyme hinzufügen zu können, müssen vorher die Sprache und die Entität gewählt werden. Es stehen nur Sprachen zur Verfügung, welche dem Verkaufkanal zugewiesen wurden.
Nachdem die Sprache und die Entität gewählt wurde, kann mit Klick auf Synonyme hinzufügen
ein Synonym definiert werden:
Im linken Textfeld schreibt man seinen Suchbegriff, welches durch eins oder mehrere andere Wörter gemeint sein können. Im rechten Textfeld schreibt man nun das Wort bzw die Wörter welche das Wort auf der linken Seite bedeuten können.
Das Resultat sieht dann wie folgt aus:
Es gibt des weiteren noch die Möglichkeit, Synonyme von einem anderen Index zu kopieren. Dies ist nützlich wenn zum Beispiel zwei Sprachen mit der selben bzw ähnlichen Basis wie en-US und en-GB die selben Synonyme zur Verfügung haben sollen.
Das Kopieren wird mit Klick auf Synonyme von Index kopieren
gestartet.
Natürlich können Synonyme auch wie gewohnt mit einem Klick auf die das Drei Punkte Symbol der betreffenden Zeile bearbeitet bzw gelöscht werden.
Nach der Anpassung der Werte, muss mit Klick auf Synonyme im Index updaten
die Änderung in die Meilisearchinstanz übermittelt werden.
Bereich Storefront
Die Benutzeroberfläche in der Storefront wurden visuell nur gering angepasst und folgen dem Shopware Standard.
Suchvorschlag
Bei eingabe in das Suchfeld wird nach Shopware Standard die Suchvorschau geöffnet. Diese Suchvorschau wird durch Hersteller- und Kategorieergebnisse erweitert
Suchübersichtsseite
Die Suchübersichtseite ist per Standard optisch unverändert. Lediglich Anpassungen bei den Filtern werden durch die Erweiterung getätigt. Es wird ein Kategoriefilter hinzugefügt um eine Filterung von Ergebnissen zu einer bestimmten Kategorie zu ermöglichen.
Wie vielleicht schon aus dem Screenshot ersichtlich wurde, werden die einzelnen Filteroptionen durch die daraus resultierende Ergebnisanzahl zu jeder individuellen Option mit ausgegeben. Ebenfalls aktualisiert sich die Ergebnisanzahl wenn ein Filter gesetzt wurde:
Eigene Herstellerübersicht
Ein weiteres Feature der Erweiterung ist, eine individuell Herstellerübersichtsseite zu der im Suchvorschlag verlinkt wird. Es handelt sich dabei um eine SEO-URL die auch laut Shopware Standard in der SEO Datenstruktur von Shopware zu finden ist.
Der Aufbau der URL ist
/search/HERSTELLER_NAME
HERSTELLER_NAME wird durch den jeweiligen hinterlegten Herstellernamen in einer Websicheren Art und Weise ersetzt.
Wenn man auf einen der gefunden Hersteller klickt, wird man auf eine Seite weitergeleitet, die ein Produktlisting des Herstellers inklusive Filtermöglichkeiten und sinngemäßer Überschrift anzeigt: