Open-Source Spryker-Suchtools

Transparente und feineinstellbare Suchrelevanz für Spryker.

Produkt-Rankings in Spryker debuggen und gezielt optimieren — mit nachvollziehbarem Scoring für Elasticsearch und OpenSearch.

finalScore =

Normalisierte Textrelevanz + normalisierte Business-Signale.

01 / 05

Berechnung des Gesamtscores

Jeder Treffer wird als konvexe Kombination aus normalisierter Textrelevanz und gewichteten Business-Signalen berechnet.

Das Modell besteht aus zwei Komponenten: α steuert das Gewicht der Textrelevanz; 1 − α weist den verbleibenden Anteil den Business-Signalen zu.

Da beide Seiten normalisiert vorliegen, bleiben die Einzelbeiträge direkt vergleichbar und der finale Score verständlich.

Berechnet durch Search Ranking · nachvollziehbar via Search Debug

02 / 05

Elasticsearch-Relevanz normalisieren

Der nach oben unbegrenzte _score von Elasticsearch wird in ein Intervall von 0 bis knapp unter 1 transformiert.

Diese Transformation wahrt die ursprüngliche Sortierreihenfolge und verhindert verlässlich, dass extrem hohe Text-Scores sämtliche Business-Signale überlagern.

Dafür kommt dieselbe Sättigungsfunktion zum Einsatz, mit der BM25 Termfrequenzen skaliert — hier angewendet auf den Gesamtdokument-Score.

score / (score + k)

03 / 05

Sättigungspunkt festlegen

Der Parameter k definiert den Schwellenwert, an dem die normalisierte Relevanz exakt 0,5 erreicht.

Gilt score = k, liefert der Relevanzterm genau 0,5. Kleinere Werte führen zu einer früheren Sättigung; größere Werte erhalten die Feinabstimmung bei hohen Elasticsearch-Scores aufrechterhalten.

Statt k manuell zu raten, ermittelt Search Ranking praxisnahe Richtwerte: Auf Basis eines Query-Sets aus CSV-Import oder Admin-Bewertung und einer definierten Auswertungs-Tiefe analysiert das Package die Top-Treffer und schlägt den gemessenen Mittelwert der _score-Werte als Startpunkt für k vor.

Test-Queries + Stichprobentiefe → Gemessene _score-Verteilung → Empfohlenes k

04 / 05

Normalisierte Business-Signale einbinden

Die zweite Komponente bündelt Kennzahlen wie Click-Through-Rate, Conversion-Rate, Lieferfähigkeit oder Marge.

Jede Metrik wird vor der Verrechnung auf Werte zwischen 0 und 1 skaliert, wodurch Kennzahlen unterschiedlicher Einheiten vergleichbar werden.

Search Ranking analysiert die Verteilungssymmetrie der Metrikdaten und schlägt eine passende Normalisierungsfunktion vor. Die integrierte Analyseansicht vergleicht die empirische Verteilung mit der mathematischen Kurve; der finale Ausdruck bleibt frei konfigurierbar.

Zusätzlich empfiehlt sich ein gering gewichtetes random()-Signal. Es löst Treffer-Gleichstände deterministisch auf und verhindert, dass Produkte dauerhaft auf identischen Plätzen feststecken.

Verteilungsanalyse → Empfehlung der Normalisierungsfunktion · gering gewichtetes random() zur Tie-Breaking-Steuerung

05 / 05

Einheitliche Signalgewichtung

Alle eingegebenen Signalgewichte werden automatisch so normiert, dass ihre Summe stets 1 ergibt.

In Zed können Administratoren relative Verhältnisse angeben, ohne manuell eine Gesamtsumme von 100 % ausrechnen zu müssen. Die Eingaben 30 und 10 werden automatisch zu 0,75 und 0,25 umgerechnet.

Diese Umrechnung erfolgt einmalig beim Publizieren der Konfiguration, damit Anfragen zur Laufzeit schlank bleiben.

wi = enteredWeighti / Σ enteredWeightj

Ressourcen

Sieben Open-Source-Packages in einem composer require — Suchrelevanz, Debugging, Indexierung und Analyzer-Verwaltung für Spryker.

Vollständige Paketübersicht →

Roadmap

Search Relevance v1 basiert auf dem Funktionsumfang von OpenSearch 1.3 — dem langjährigen Standard für Spryker-Projekte.

Mit der Unterstützung von OpenSearch 3.x in Spryker werden fortschrittliche Ranking-Verfahren anwendbar. Search Relevance v2 bringt dafür Unterstüzung für Reranking, Hybrid Retrieval, Learning-to-Rank und weitere Ansätze.

Ursprung

Das Projekt basiert auf Sprykers Data-driven ranking Best-Practice-Leitfaden. Dieser beschreibt ein bewährtes Praxissystem, das ursprünglich von Martin Loetsch und Krešimir Slugan für Contorion konzipiert und implementiert wurde. Spryker selbst liefert hierfür keinen Quellcode, lediglich obige Anleitung.

search-ranking und search-ranking-optimizer setzen dieses Konzept für die Spryker-Architektur um und erweitern es um Funktionen wie Store-/Locale-Scoping, spezifitätsbasierte Relevanzgewichtung und automatisierte Blackbox-Optimierung.