Skip to content

TID Relevanz-Sortierung

Einführung

Das Relevanz-Sortierung Plugin fügt den Produktlisten in Shopware eine neue Sortieroption hinzu: Sortierung nach Relevanz.
Diese Funktion arbeitet wie jede andere eingebaute Sortierung (z. B. Topseller, Niedrigster Preis), nutzt jedoch einen konfigurierbaren Relevanz-Score.

Funktionsweise

Der Relevanz-Score für jedes Produkt wird durch einen integrierten Algorithmus berechnet.
Durch den Administrator kann beeinflusst werden, wie dieser Score zustande kommt:

  • Gewichtung verschiedener Score-Faktoren anpassen
  • Durch Boosts kann der Score für einzelne Produkte künstlich erhöht werden
  • Eigene Regelsätze über Produkt-Custom Fields definieren

Nach der Konfiguration steht den Kunden die Option „Relevanz“ als Sortiermethode in jeder Produktliste zur Verfügung.

Konfiguration

Gewichtungsanpassungen

Dies ist die Formel, die zur Berechnung des Relevanz-Score für jedes Produkt genutzt wird:

plaintext
Score =
  (Aktuelle Verkäufe × 4)    +
  (Marge ÷ 10)               +
  Produktalter               +
  Gesamte Verkäufe           +
  (Saisonale Verkäufe × 4)   +
  Lagerbestand               ± 
  Custom-Field Boost         ±
  Rabattbonus                ±
  Manueller Boost

Durch die Zahlenfelder in der Plugin-Konfiguration unter dem Tab „Anpassungen“ kann gesteuert werden, wie der Algorithmus die Relevanz-Score-Faktoren gewichtet.

EinstellungBeschreibung
Aktuelle VerkäufeGewichtung für Produkte, die in dem konfigurierten Zeitraum verkauft wurden.
VerkaufsmargeGewichtung für die Gewinnmarge verkaufter Produkte.
RabattbonusBoost für aktuell reduzierte Produkte.
ProduktalterGewichtung für die Dauer, wie lange ein Produkt bereits verfügbar ist.
Gesamte VerkäufeGewichtung für die Gesamtzahl der Verkäufe.
Saisonale VerkäufeGewichtung für Produkte mit hohen Verkäufen in derselben Saison vergangener Jahre.
LagerbestandGewichtung für den verfügbaren Lagerbestand.

Custom-Boost-Regeln (YAML)

Komplexe Boost-Logik kann im Texteditor-Feld der Plugin-Konfiguration in YAML-Syntax definiert werden.
Damit lassen sich individuelle Regelsätze über Produkt-Custom Fields (Zusatzfelder) umsetzen.

WARNING

Im Feld Custom Boost Regeln muss immer im Code-Editor gearbeitet werden.
Der Code-Editor wird durch Klick auf das </> Symbol in der rechten oberen Ecke aktiviert. Danach erscheint die kleine Zeilennummer 1.
Nur so lässt sich YAML ohne Formatierungsprobleme eingeben.

Nach dem Speichern verlässt der Editor automatisch die Code-Ansicht und zeigt das YAML eventuell seltsam formatiert an, doch es funktioniert weiterhin korrekt.
Zum Bearbeiten einfach erneut den Code-Editor mit dem </> Symbol aktivieren.

Der YAML-Aufbau richtet sich danach, ob ein Custom Field den Typ single oder multi hat:

Ein Custom Field besitzt den Typ single, wenn nur ein Wert in das Feld eingetragen werden kann.
Ein Custom Field besitzt den Typ multi, wenn mehrere Werte in das Feld eingetragen werden können.

ElementBeschreibung
field_typeDefiniert den Typ des Custom-Fields. Unterstützte Typen: "single" oder "multi".
operatorVergleichsoperator zur Auswertung des Werts. Beispiel: ">" prüft, ob der Wert im Custom Field größer als der Vergleichswert ist z.B. Custom Field Wert > Vergleichswert. Unterstützt werden =, !=, <, >, <=, >=.
comparison_valueWert zum Vergleich. Nur wenn die Bedingung erfüllt ist, wird der Boost angewendet.
boostWert, der zum Relevanz-Score addiert wird, wenn die Bedingung erfüllt ist.

Diese Elemente werden verwendet um ein ruleset zu erstellen. Dies ist eine Sammlung aus mehreren selbst definierten Regeln.

Beispielstruktur für ein Custom Field vom Typ single:

yaml
custom_field_technical_name:
    field_type: "single"
    ruleset:
        beispiel_regel:
            operator: ">"
            comparison_value: "10" 
            boost: 5
        beispiel_regel2:
            operator: "="
            comparison_value: "42"
            boost: 2000

Die Regel beispiel_regel erhöht den Wert um 5, wenn der Custom Field-Wert größer als 10 ist.
Die Regel beispiel_regel2 erhöht den Wert um 2000 falls der Custom Field-Wert genau 42 beträgt.

Bei den Custom Fields vom Typ multi wird auf eine andere Art verglichen:

ElementBeschreibung
match (none, any, all)"none" bedeutet, dass die Regel greift, wenn kein Vergleichswert im Feld vorkommt. "any" greift, wenn mindestens ein Wert im Feld vorhanden ist und "all" wenn alle gefunden wurden.
comparison_valueListe von Werten, gegen die geprüft wird. Diese Liste muss IMMER innerhalb von [] angegeben werden.

Beispiel für multi:

yaml
custom_field_technical_name:
    field_type: "multi"
    ruleset:
        beispiel_regel:
            match: "any"
            comparison_value: ["test_option_1", "test_option_2"]
            boost: 3
        beispiel_regel2:
            match: "none"
            comparison_value: ["test_option_3"]
            boost: 5

Regelsatz beispiel_regel erhöht den Score um 3, wenn einer der Werte (test_option_1 oder test_option_2) im Feld enthalten ist.
Regelsatz beispiel_regel2 erhöht den Score um 5, wenn der Wert (test_option_3) nicht im Feld enthalten ist.

Ein komplettes YAML-Beispiel mit single und multi kombiniert:

yaml
rating_custom_field:
    field_type: "single"
    ruleset:
        beispiel_regel:
            operator: ">"
            comparison_value: "3.89" 
            boost: "5"

custom_product_material_composition:
    field_type: "single"
    ruleset:
        beispiel_regel:
            operator: "="
            comparison_value: "100% Cotton"
            boost: "12"
    
tids_product_customfields_testing:
    field_type: "multi"
    ruleset:
        beispiel_regel:
            match: "none"
            comparison_value: ["test_option_3", "test_option_4"]
            boost: "3"

Anwendung

Beispiel:

  1. Produkte mit aktuellen Verkäufen sollen geboostet werden.
  2. Produkte im Sale sollen im Score höher bewertet werden.
  3. Ein bestimmtes Custom Field soll je nach inhalt zusätzlich einen Boost erhalten.

Dafür wird:

  • Ein hoher Wert für Aktuelle Verkäufe und Rabattbonus in der Konfiguration gesetzt
  • Eine Custom-Rule im YAML definiert, die das gewünschte Feld boostet

Wird die Sortierung „Relevanz“ ausgewählt, erscheinen die passenden Produkte höher in der Liste.