Advanced Search

Die Advanced Search steht Dir ab dem Plan Shopware Evolve als Erweiterung zur Verfügung.


Die Advanced Search bietet Dir einfache Konfigurationsmöglichkeiten und aufgrund der Elasticsearch-Basis hohe Performance.

Voraussetzungen

Da die Advanced Search auf Elasticsearch basiert, ist eine Elasticsearch-Instanz Grundvoraussetzung für den Betrieb. Wie Du Elasticsearch in Shopware 6 integrierst, erfährst Du hier.

Installation

Als Bestandteil des Shopware Evolve Plans steht Dir die Advanced Search als Erweiterung zur Verfügung.
Du kannst die Erweiterung unter Erweiterung > Meine Erweiterungen herunterladen und installieren.
Wenn Du Dich im Reiter Shopware Account angemeldet hast, wird die Erweiterung im Reiter Allgemein aufgelistet und kann über den "..."-Button installiert werden.
Nachdem die Erweiterung installiert wurde, kannst Du diese über den Schalter links neben der Erweiterung aktivieren.

Weitere Informationen zur Verwaltung von Erweiterungen findest Du hier.
 

Plugin kann nicht installiert werden

Solltest Du bei der Installation der Erweiterung die Meldung

"Could not install plugin, got 1 failure(s). Required plugin/package "shopware/platform >=v6.0

erhalten, ist es erforderlich, eine Anpassung der composer.json der Erweiterung vorzunehmen.
Die Erweiterung findest Du im Shopware-Verzeichnis unter /custom/plugins/SwagEnterpriseSearchPlatform.
In der composer.json passt Du diesen Bereich an:

"require": {
"shopware/platform": ">=6.1.0 < 6.3.0"
},

Dort entfernst Du den Eintrag

"shopware/platform": ">=6.1.0 < 6.3.0"

und fügst

"shopware/core": ">=6.1.0 < 6.3.0",
"shopware/storefront": ">=6.1.0 < 6.3.0",
"shopware/administration": ">=6.1.0 < 6.3.0",
"shopware/elasticsearch": ">=6.1.0 < 6.3.0"

ein.
Nachdem Du die Änderungen gespeichert hast, kannst Du die Erweiterung im Admin unter Erweiterungen > Meine Erweiterungen installieren.

Konfiguration

Die Konfiguration der Advanced Search findest Du unter Einstellungen > Erweiterungen > Shopware Advanced Search.

Übersicht

Im Tab Übersicht kannst Du die grundlegende Konfiguration der Suche vornehmen.
 

Im Bereich Allgemeine Einstellungen wird über Welche Informationen werden indexiert und priorisiert (1) ein Modal aufgerufen, in dem Du die für die Suche zu berücksichtigenden Datensätze festlegst.

Im Abschnitt Trefferanzahl definierst Du die Anzahl der angezeigten Elemente für die Vorschausuche (2) und die Ergebnisseite (3).

Durchsuchbare Informationen

Um die zu durchsuchenden Daten festzulegen, wähle zunächst aus, für welche Entity (1) Du die Einstellung vornehmen möchtest. In der Advanced Search können Produkte, Kategorien und Hersteller durchsucht werden.

Anschließend wird Dir unterhalb eine Liste mit allen für die gewählte Entity verfügbaren Datensätzen aufgelistet. Dort kannst Du für jeden Datensatz festlegen, ob dieser nicht durchsucht (2), durchsucht (3) oder priorisiert (4) werden soll.
Priorisiert bedeutet, dass Treffer bei der Suche für den Inhalt dieses Datensatzes eine doppelt so hohe Gewichtung erhalten.

Bei Datensätzen, die auf Datenbankebene als Text (z.B. varchar) definiert sind, kannst Du zusätzlich festlegen, ob hierbei auch Teiltreffer (5) einbezogen werden sollen und ob auch Zusammengesetzte Wörter (6) berücksichtigt werden.
Teiltreffer sind z.B. kleinere Wortteile eines längeren Begriffs (Testprodukt).
Bei zusammengesetzten Wörtern werden mehrere Wörter auch ohne Eingabe eines Leerzeichens kombiniert (Test Produkt findet auch Testprodukt).

Nachdem Du Initial die Einstellungen der Indexierung vorgenommen hast, ist es erforderlich, eine Indexierung über die Serverkonsole durchzuführen. Wie Du die Indexierung durchführst, erfährst Du im Abschnitt Indexierung.

Beachte bitte, dass die Konfiguration der zu indexierenden Daten aktuell nicht Verkaufskanalspezifisch möglich ist.

Folgend einmal die wichtigsten Variablen erklärt:

FeldBeschreibung
fullTextStandard Shopware Feld mit niedriger Priorität
fullTextBoostedStandard Shopware Feld mit höherer Priorität
price.grossBruttopreis
price.netNettopreis
productNumberProduktnummer
stockLagerbestand
restockTimeWiederauffüllzeit in Tagen
autoIncrementStaffelung
availableStockVerfügbarer Lagerbestand
variationPorduktvariante
displayGroupString Feld mit IDs, um den Content anzuzeigen
manufacturerNumberHerstellernummer
eanEAN-Nummer
purchaseStepsMenge Schritte des Kaufs
maxPurchaseMaximalabnahme
minPurchaseMinimalabnahme
purchaseUnitVerkaufseinheit
referenceUnitGrundeinheit
purchasePrices.grossEinkaufspreis Brutto
purchasePrices.netEinkaufspreis Netto
weightGewicht
widthBreite
heightHöhe
lengthLänge
ratingAverageBewertung im Durchschnitt
categoryTreeKategoriebaum
propertyIdsEigenschaften IDs
optionIdsIDs der Optionen
tagIdsTag IDs
categoryIdsKategorie IDs
childCountAnzahl der Varianten
salesVerkäufe
metaDescriptionMeta Produktbeschreibung
nameProduktname
keywordsSuch-Schlagwörter
descriptionProduktbeschreibung
metaTitleMeta Titel
packUnitVerpackungseinheit
packUnitPluralVerpackungseinheit-Mehrzahl
customSearchKeywordsIm Admin definierte Suchschlägwörter
deliveryTime.unitLieferzeit Einheit
deliveryTime.maxMaximale Lieferzeit
deliveryTime.minMinimale Lieferzeit
deliveryTime.nameName der Lieferzeit
tax.positionPosition der Steuer
tax.nameName der Steuer
tax.taxRateProzentrate der Steuer
manufacturer.descriptionHerstellerbeschreibung
manufacturer.nameHerstellername
manufacturer.linkLink des Herstellers
unit.nameName der Maßeinheit
unit.shortCodeMaßeinheit Kurzform
cover.positionPosition des Vorschaubildes in der Medien Übersicht des Artikels.
cmsPage.entityElement
cmsPage.typeLayout Typ der hinterlegten Erlebniswelt
cmsPage.nameName der hinterlegten Erlebniswelt
canonicalProduct.customSearchKeywordsSEO-Daten des jeweiligen Werts
canonicalProduct.packUnitPluralSEO-Daten des jeweiligen Werts
canonicalProduct.packUnitSEO-Daten des jeweiligen Werts
canonicalProduct.metaTitleSEO-Daten des jeweiligen Werts
canonicalProduct.descriptionSEO-Daten des jeweiligen Werts
canonicalProduct.keywordsSEO-Daten des jeweiligen Werts
canonicalProduct.nameSEO-Daten des jeweiligen Werts
canonicalProduct.metaDescriptionSEO-Daten des jeweiligen Werts
canonicalProduct.salesSEO-Daten des jeweiligen Werts
canonicalProduct.childCountSEO-Daten des jeweiligen Werts
canonicalProduct.categoryIdsSEO-Daten des jeweiligen Werts
canonicalProduct.tagIdsSEO-Daten des jeweiligen Werts
canonicalProduct.streamIdsSEO-Daten des jeweiligen Werts
canonicalProduct.optionIdsSEO-Daten des jeweiligen Werts
canonicalProduct.propertyIdsSEO-Daten des jeweiligen Werts
canonicalProduct.categoryTreeSEO-Daten des jeweiligen Werts
canonicalProduct.ratingAverageSEO-Daten des jeweiligen Werts
canonicalProduct.lengthSEO-Daten des jeweiligen Werts
canonicalProduct.heightSEO-Daten des jeweiligen Werts
canonicalProduct.widthSEO-Daten des jeweiligen Werts
canonicalProduct.weightSEO-Daten des jeweiligen Werts
canonicalProduct.purchasePrices.grossSEO-Daten des jeweiligen Werts
canonicalProduct.purchasePrices.netSEO-Daten des jeweiligen Werts
canonicalProduct.referenceUnitSEO-Daten des jeweiligen Werts
canonicalProduct.purchaseUnitSEO-Daten des jeweiligen Werts
canonicalProduct.minPurchaseSEO-Daten des jeweiligen Werts
canonicalProduct.maxPurchaseSEO-Daten des jeweiligen Werts
canonicalProduct.purchaseStepsSEO-Daten des jeweiligen Werts
canonicalProduct.eanSEO-Daten des jeweiligen Werts
canonicalProduct.manufacturerNumberSEO-Daten des jeweiligen Werts
canonicalProduct.displayGroupSEO-Daten des jeweiligen Werts
canonicalProduct.variationSEO-Daten des jeweiligen Werts
canonicalProduct.availableStockSEO-Daten des jeweiligen Werts
canonicalProduct.autoIncrementSEO-Daten des jeweiligen Werts
canonicalProduct.restockTimeSEO-Daten des jeweiligen Werts
canonicalProduct.stockSEO-Daten des jeweiligen Werts
canonicalProduct.productNumberSEO-Daten des jeweiligen Werts
canonicalProduct.price.grossSEO-Daten des jeweiligen Werts
canonicalProduct.price.netSEO-Daten des jeweiligen Werts
prices.quantityEndMaximale Menge des Produktes, die im Warenkorb liegen muss, damit dieser Preis gilt.
prices.quantityStartMinimale Menge des Produktes, die im Warenkorb liegen muss, damit dieser Preis gilt.
crossSellings.limitMaximale Produktanzahl
crossSellings.typeCross Selling Typ
crossSellings.sortDirectionCross Selling Sortierung Richtung
crossSellings.sortByCross Selling Sortierung
crossSellings.positionCross Selling Position
crossSellings.nameCross Selling Name
visibilities.visibilitySichtbarkeit
searchKeywords.rankingSuch-Schlagwort
searchKeywords.keywordSuch-Ranking
productReviews.commentProduktbewertung Kommentar
productReviews.pointsProduktbewertung Bewertung
productReviews.contentProduktbewertung Inhalt
productReviews.titleProduktbewertung Titel
productReviews.externalEmailMail des Endkunden
productReviews.externalUserVorname des Endkunden
seoUrls.urlSEO-URL
orderLineItems.typeTyp der bestellten Position
orderLineItems.totalPriceGesamtpreis der bestellten Position
orderLineItems.unitPriceStückpreis der bestellten Position
orderLineItems.quantityStückzahl der bestellten Position
orderLineItems.pricePreisfeld der bestellten Position
orderLineItems.discountRabatt der bestellten Position
orderLineItems.percentageProzentangabe des Discounts
orderLineItems.labelName der bestellten Position
orderLineItems.referencedIdProdukt ID der bestellten Position
orderLineItems.identifierProdukt ID der bestellten Position
options.colorHexCodeFarbcode der in der Eigenschaft hinterlegten Farbe.
options.nameName der Variante
properties.colorHexCodeColor-Hex-Code der Eigenschaft
properties.positionPosition der Eigenschaft
properties.nameName der Eigenschaft
categories.keywordsKategorie Schlagwörter
categories.metaDescriptionKategorie Meta Beschreibung
categories.metaTitleKategorie Meta Titel
categories.descriptionKategorie Beschreibung
categories.externalLinkKategorie Externer Link
categories.linkTypeKategorie Link-Typ
categories.nameKategoriename
categories.productAssignmentTypeProduktzuweisung Typ
categories.typeKategorietyp
categories.childCountAnzahl der Unterkategorien
categories.pathKategoriepfad
categories.levelKategorie-Ebene
categories.autoIncrementEinmalige Dezimalzahl

Vorschau

Die Vorschau ermöglicht Dir, die Sucheinstellungen direkt im Admin zu testen.

Um die Vorschau zu nutzen, wähle zunächst den Verkaufskanal (1), für den Du die Suche testen möchtest.
Über die Auswahl (2) neben dem Suchfeld (3) kannst Du festlegen, ob Du die Suche für Produkte, Kategorien oder Hersteller testen möchtest.
Nachdem Du einen Suchbegriff eingegeben hast, wird Dir unterhalb eine Liste mit den Suchergebnissen angezeigt.
In dieser Liste wird für die Suchergebnisse zusätzlich ein Ranking eingeblendet, über das Du die Relevanz zum Suchbegriff erkennen kannst. Dieses Ranking wird anhand der Elasticsearch-Suchalgorithmen errechnet. Einige weitere Informationen zum Ranking eines Suchergebnisses erhältst Du, wenn Du mit der Maus über das Ranking des Suchergebnisses hooverst.

Boostings

Neben der Priorisierung von einzelnen zu durchsuchenden Datensätzen, besteht die Möglichkeit, zusätzliche Boostings anzulegen. Ein Boosting bietet Dir gezielte Konfigurationsoptionen, um z.B. bestimmte Produkte in den Suchergebnissen weiter oben anzuzeigen.

Produkt-Boosting

Für das Boosting von Produkten werden vorhandene dynamische Produktgruppen verwendet. Es werden die Produkte höher gewertet, die in der Produktgruppe vorhanden sind und auf die die Suchanfrage generell zutrifft.
Solltest Du bisher noch keine entsprechende dynamische Produktgruppe erstellt haben, empfehlen wir Dir, dies als ersten Schritt durchzuführen.

Für die Konfiguration eines Produkt-Boostings vergib zunächst einen Namen (1) und die gewünschte Boosting-Relevanz im Feld Boost (2). Diese Boosting Relevanz wird den Produkten zur ohnehin schon erhaltenen Relevanz hinzuaddiert. Um das Boosting zu aktivieren, klicke auf den Schalter Aktiv (3). Optional ist es möglich, das Boosting nur in einem bestimmten Zeitraum zu verwenden. Hierzu stelle den Zeitraum in den Feldern Aktiv von (4) und Aktiv bis (5) ein. Als Stream Typ (5) wähle Product Stream aus, hierdurch wird das Feld TypeId (7) eingeblendet. Im Auswahlfeld TypId kannst Du dann aus den vorhandenen dynamischen Produktgruppen wählen.

Kategorie- und Hersteller-Boosting

Für das Boosting von Kategorien und Herstellern kannst Du direkt im Modal des Boostings eigene Regeln definieren.

Bei der Konfiguration eines Kategorie oder Hersteller-Boostings, vergib zunächst einen Namen (1) und die gewünschte Boosting-Relevanz im Feld Boost (2). Um dieses Boosting zu aktivieren, klicke auf den Schalter Aktiv (3).
Über die Felder Aktiv von (4) und Aktiv bis (5) kannst Du das Boosting zeitlich begrenzen, ohne dieses manuell zu einer bestimmten Zeit ein- bzw. ausschalten zu müssen.
Als Stream Typ (6) wähle Entity Stream aus, im nun erscheinenden Feld Typ (7) Kategorie oder Hersteller.
Anschließend wird die Möglichkeit zum Erstellen von Regeln (8) eingeblendet. Diese Regel-Konfiguration basiert auf dem Rule-Builder. Hiermit kannst Du individuelle Bedingungen erstellen, anhand derer das Boosting angewendet werden soll.

Aktionen

Mit Aktionen ist es möglich, nach bestimmten Begriffen/Keywords im Namen zu suchen. Der Kunde wird automatisch zu einem definierten Bereich (Url, Produkt oder Kategorie) weitergeleitet.

Name (1): Hinterlege einen Namen für die Aktion.
Suchbegriffe (2): Hier kannst Du die Suchbegriffe bzw. Keywords eintragen.
Aktiv (3): Definiere, in welchem Zeitraum die Aktion gültig ist.
Typ (4): Hier kannst Du wählen, ob der Kunde zu einer definierten URL, einem Produkt oder einer Kategorie weitergeleitet werden soll, wenn der Suchbegriff gesucht wird.
URL / Produkt / Kategorie (5): Wie in (4) erwähnt kannst Du, je nach dem welchen Typ Du wählst, eine URL, ein Produkt oder eine Kategorie hinterlegen.

Synonyme

In der Suche bezieht sich die Verwendung des Begriffs "Synonyme" normalerweise auf die Funktion, bei der Suchmaschinen oder Suchwerkzeuge alternative Begriffe oder Ausdrücke anzeigen, die eine ähnliche Bedeutung wie der eingegebene Suchbegriff haben. Diese Funktion hilft Benutzern, ihre Suchergebnisse zu verfeinern, indem sie ihnen ähnliche Begriffe oder Variationen anbietet, die relevant sein könnten.

Wenn beispielsweise jemand nach "Auto" sucht, könnte eine Suchmaschine möglicherweise Synonyme wie "Fahrzeug", "Kraftwagen" oder "PKW" anzeigen, um dem Benutzer weitere Optionen zu bieten. Dies erleichtert die Suche nach relevanten Informationen und erweitert den Umfang der Suchergebnisse.

Indexierung

Nachdem Du das erste Mal die Konfiguration der Advanced Search vorgenommen hast, ist es erforderlich, den Index aufzubauen. Dies ist in 3 Schritten in der Serverkonsole möglich.

Zunächst werden die Indizes erstellt

php bin/console es:index

Nachdem dieser Schritt vollständig durchgelaufen ist, erfolgt im zweiten Schritt die Verarbeitung über die Message Queue. In den meisten Systemen erfolgt dies automatisch über den Admin bzw. CLI Worker. Schaue Dir gerne noch mal unseren Doku-Artikel zum Thema Message Queue an, falls Du Dir unsicher bist, ob die Message Queue bei Dir automatisch abgearbeitet wird.

Abschließend können noch die Aliasse für die Indizes angelegt werden. Hierzu sollte aber gesagt sein, dass dies in der Regel automatisch erfolgt. In manchen Systemen kann dies jedoch erforderlich sein. Sollten die Indizes bei Dir also erfolgreich erstellt worden sein, Du aber weiterhin keine Produkte in Deiner Storefront siehst, kannst Du noch den folgenden Befehl ausführen.

php bin/console es:create:alias

Die Indexierung funktioniert genau wie bei der technisch zu Grunde liegenden Elasticsearch-Integration. Daher findest Du weitere Informationen in der Dokumentation zu Elasticsearch.

Damit nun final auch neue Produkte bzw. Änderungen an bestehenden Produkten in die Indizes übernommen werden, ist es erforderlich SHOPWARE_ES_INDEXING_ENABLED=1 in der .env Datei in Deinem Shopverzeichnis auf 1 (aktiv) zu setzen. Bei Änderungen der Konfiguration oder der Sucheinstellungen ist ein Neuaufbau des Suchindexes notwendig. 

War dieser Artikel hilfreich?