gezielt anpassen statt dem Zufall ueberlassen
Die Standard-Relevanz der Magento-Suche behandelt jedes Attribut nach denselben Regeln, unabhaengig davon, ob eine Suchanfrage nach SKU, Marke oder Beschreibung sucht. Wer die Such-Relevanz gezielt ueber Search-Weight, eigene Query-Builder und Function-Score-Boosting steuert, bringt die Produkte nach oben, die fuer den jeweiligen Shop tatsaechlich zaehlen.
Inhaltsverzeichnis
- 1. Was Such-Relevanz in Magento konkret bedeutet
- 2. Die Search-Weight-Konfiguration im Backend
- 3. Wie Attribut-Gewichtung in die ES-Query einfliesst
- 4. Der Query-Builder: Match, MultiMatch und Boosting
- 5. Eigene Query-Builder-Logik per Plugin anpassen
- 6. Function-Score-Queries fuer E-Commerce-Boosting
- 7. Synonyme und Stopwords als Relevanz-Hebel
- 8. Relevanz messen: Testing und A/B-Ansaetze
- 9. Praxisbeispiel: Verfuegbarkeit und Neuheit als Boost-Faktor
- 10. Zusammenfassung
- 11. FAQ
1. Was Such-Relevanz in Magento konkret bedeutet
Such-Relevanz beschreibt, in welcher Reihenfolge Magento Suchtreffer anzeigt, wenn mehrere Produkte auf eine Suchanfrage passen. Technisch ist Relevanz keine feste Groesse, sondern ein numerischer Score, den Elasticsearch fuer jedes Dokument im Kontext einer konkreten Query berechnet. Dieser Score basiert auf dem BM25-Algorithmus, der Termhaeufigkeit, inverse Dokumenthaeufigkeit und Feldlaenge kombiniert, aber in der Magento-Suche wird dieser Basis-Score zusaetzlich durch konfigurierbare Gewichtungen beeinflusst.
Der haeufigste Frustpunkt bei der Such-Relevanz in E-Commerce-Suchen: Ein Nutzer sucht nach "Wireless Kopfhoerer" und erhaelt als erstes Ergebnis ein Produkt, dessen Beschreibung den Begriff "Wireless" nur nebensaetzlich erwaehnt, waehrend das eigentlich relevante Hauptprodukt weiter unten steht. Dieses Problem entsteht fast immer, weil die Standard-Gewichtung von Magento nicht auf das konkrete Sortiment abgestimmt ist, sondern generische Werte verwendet, die fuer keinen Shop optimal sind.
Dieser Artikel zeigt die drei zentralen Stellhebel, mit denen sich Such-Relevanz in Magento gezielt anpassen laesst: die Search-Weight-Konfiguration je Attribut, eigene Anpassungen am Query-Builder und Function-Score-Queries fuer geschaeftslogische Boosting-Faktoren wie Verfuegbarkeit und Neuheit.
2. Die Search-Weight-Konfiguration im Backend
Der einfachste Einstiegspunkt fuer die Steuerung der Such-Relevanz ist die Search-Weight-Einstellung, die sich pro Attribut unter Stores > Attributes > Product im Feld "Search Weight" konfigurieren laesst. Dieser Wert reicht von 1 bis 10 und legt fest, wie stark ein Treffer in diesem Attribut in den Gesamt-Score einfliesst. Ein hoher Wert fuer das Feld sku sorgt dafuer, dass eine exakte Artikelnummer-Suche fast immer das richtige Produkt an erster Stelle liefert, waehrend ein niedrigerer Wert fuer description verhindert, dass zufaellige Erwaehnungen in Fliesstext die Rangfolge dominieren.
Diese Konfiguration wirkt sich unmittelbar auf die generierte Elasticsearch-Query aus: Der Search-Weight-Wert wird als Boost-Faktor an den jeweiligen Feldnamen angehaengt, im Format feldname^gewicht. Wichtig zu verstehen: Diese Boosts sind relativ zueinander, nicht absolut. Ein Attribut mit Weight 10 dominiert nicht automatisch jede Suche, sondern erhaelt lediglich einen zehnfach staerkeren Einfluss im Vergleich zu einem Attribut mit Weight 1, innerhalb derselben Query.
3. Wie Attribut-Gewichtung in die ES-Query einfliesst
Technisch liest Magento die konfigurierten Search-Weight-Werte beim Aufbau jeder Suchanfrage aus der Attributkonfiguration aus und uebergibt sie an den Query-Builder, der daraus die Feldliste fuer die multi_match-Query zusammensetzt. Jedes durchsuchbare Feld erscheint in dieser Liste mit seinem individuellen Boost-Suffix, sodass die Such-Relevanz am Ende aus dem Zusammenspiel aller konfigurierten Gewichte entsteht, nicht aus einem einzelnen Wert.
Der Parameter type innerhalb der multi_match-Query beeinflusst zusaetzlich, wie diese Gewichte kombiniert werden. Der Typ best_fields nimmt den hoechsten Einzel-Score aus allen Feldern, waehrend cross_fields Terme ueber mehrere Felder hinweg wie ein einziges grosses Feld behandelt, was fuer Produktsuchen mit Begriffen aus Name und Beschreibung oft praezisere Ergebnisse liefert. Magento verwendet standardmaessig cross_fields fuer die Katalogsuche, was bei der Interpretation der Such-Relevanz-Ergebnisse wichtig zu wissen ist.
GET /magento2_product_1_v1/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "wireless kopfhoerer",
"fields": ["sku^10", "name^5", "brand^3", "description^1", "short_description^2"],
"type": "cross_fields"
}
}
]
}
}
}
4. Der Query-Builder: Match, MultiMatch und Boosting
Der zentrale Baustein fuer Such-Relevanz auf Codeebene ist Magento\Elasticsearch\SearchAdapter\Query\Builder\Match, der aus dem Nutzer-Query-String und den konfigurierten Attributgewichten die tatsaechliche Query-Klausel zusammensetzt. Diese Klasse iteriert ueber alle durchsuchbaren Attribute, liest deren Search-Weight aus und baut das Boost-Suffix fuer jedes Feld. Wer die Standardgewichtung ueber das Backend hinaus verfeinern will, etwa mit nicht-linearen Gewichten oder kontextabhaengigen Anpassungen, muss an dieser Stelle ansetzen.
Ein haeufiger Anwendungsfall fuer Anpassungen am Query-Builder ist die dynamische Gewichtung je nach Suchbegriff-Laenge oder -Typ: Eine Suche, die ausschliesslich aus Ziffern besteht, deutet meist auf eine SKU- oder EAN-Suche hin und profitiert von einer staerkeren Gewichtung exakter Felder, waehrend eine mehrwortige Suche eher von der Standard-Cross-Fields-Logik profitiert. Diese Art von kontextsensitiver Such-Relevanz laesst sich nicht ueber die statische Backend-Konfiguration abbilden, sondern erfordert einen Eingriff im Query-Builder selbst.
5. Eigene Query-Builder-Logik per Plugin anpassen
Ein Plugin auf die Match-Klasse erlaubt, die generierte Query vor dem Absenden gezielt zu modifizieren. Der folgende Ansatz erkennt numerische Suchbegriffe und verstaerkt in diesem Fall die Gewichtung des sku-Feldes zusaetzlich, ohne die Grundkonfiguration im Backend zu veraendern. Diese Art von Such-Relevanz-Anpassung bleibt update-sicher, weil sie ausschliesslich ueber den offiziellen Erweiterungspunkt arbeitet.
<?php
declare(strict_types=1);
namespace Mironsoft\SearchExtension\Plugin;
use Magento\Elasticsearch\SearchAdapter\Query\Builder\Match;
use Magento\Framework\Search\Request\Query\Match as MatchQuery;
/**
* Boosts the sku field additionally when the search term looks like
* a product code or EAN, improving relevance for exact-match queries.
*/
class NumericQueryBoostPlugin
{
/**
* Increases the sku boost for purely numeric or code-like search terms.
*
* @param Match $subject
* @param array $result
* @param MatchQuery $query
* @return array
*/
public function afterBuildQuery(Match $subject, array $result, MatchQuery $query): array
{
$queryText = $query->getValue();
if (preg_match('/^[A-Z0-9\-]{5,}$/i', (string) $queryText)) {
$result['bool']['must'][0]['multi_match']['fields'][] = 'sku^20';
}
return $result;
}
}
6. Function-Score-Queries fuer E-Commerce-Boosting
Search-Weight und Query-Builder-Anpassungen steuern die textuelle Such-Relevanz, beruecksichtigen aber keine geschaeftslogischen Faktoren wie Lagerbestand, Marge oder Aktualitaet eines Produkts. Genau hierfuer eignet sich eine function_score-Query, die den textbasierten Relevanz-Score mit zusaetzlichen Faktoren multipliziert oder addiert. Ein Produkt mit hoher textueller Relevanz, aber ausverkauftem Status, kann so gezielt heruntergestuft werden, ohne aus dem Suchergebnis zu verschwinden.
Die function_score-Query kombiniert eine beliebige Anzahl von field_value_factor- und decay-Funktionen. field_value_factor multipliziert den Score mit dem Wert eines numerischen Feldes, etwa der Anzahl verkaufter Einheiten. decay-Funktionen wie gauss oder exp reduzieren den Score mit zunehmendem Abstand von einem Referenzwert, etwa dem Erstellungsdatum, sodass neuere Produkte tendenziell staerker gewichtet werden, ohne aeltere komplett auszublenden.
GET /magento2_product_1_v1/_search
{
"query": {
"function_score": {
"query": {
"multi_match": {
"query": "wireless kopfhoerer",
"fields": ["sku^10", "name^5", "description^1"]
}
},
"functions": [
{
"filter": { "term": { "in_stock": true } },
"weight": 1.5
},
{
"field_value_factor": {
"field": "sales_count",
"modifier": "log1p",
"factor": 0.3
}
},
{
"gauss": {
"created_at": { "origin": "now", "scale": "90d", "decay": 0.5 }
}
}
],
"score_mode": "multiply",
"boost_mode": "multiply"
}
}
}
7. Synonyme und Stopwords als Relevanz-Hebel
Neben Boosting beeinflusst auch die Analyzer-Konfiguration die wahrgenommene Such-Relevanz. Ein Synonym-Filter, der "kopfhoerer" mit "headset" und "ohrhoerer" verknuepft, sorgt dafuer, dass Nutzer mit unterschiedlicher Wortwahl dieselben Treffer erhalten, ohne dass sich der Score-Mechanismus selbst aendert. Stopwords wie "und", "der", "fuer" sollten aus dem Analyzer entfernt werden, damit sie nicht faelschlich zur Termhaeufigkeit beitragen und die Relevanz verwaessern.
Ein oft uebersehener Effekt: Ein zu aggressiver Synonym-Filter kann die Such-Relevanz auch verschlechtern, wenn Begriffe verknuepft werden, die im jeweiligen Sortiment tatsaechlich unterschiedliche Produktkategorien bezeichnen. Eine sorgfaeltige, sortimentsspezifische Synonymliste ist deshalb wichtiger als eine generische Uebernahme vorgefertigter Synonym-Datenbanken.
| Relevanz-Hebel | Wirkungsebene | Aenderungsaufwand | Typischer Einsatz |
|---|---|---|---|
| Search Weight | Feld-Boost in multi_match | Backend-Konfiguration | Grundgewichtung je Attribut |
| Query-Builder-Plugin | Dynamische Query-Struktur | Custom-Code | Kontextabhaengige Anpassung |
| Function Score | Geschaeftslogik-Faktoren | Custom-Query-Erweiterung | Verfuegbarkeit, Neuheit, Marge |
| Synonyme / Stopwords | Analyzer-Konfiguration | Index-Settings | Wortschatz-Abdeckung |
8. Relevanz messen: Testing und A/B-Ansaetze
Ohne Messung bleibt jede Anpassung der Such-Relevanz Bauchgefuehl. Die Elasticsearch _explain-API zeigt fuer ein einzelnes Dokument, wie sich sein Score aus den einzelnen Query-Komponenten zusammensetzt, und ist damit das wichtigste Diagnosewerkzeug beim Debugging einzelner Faelle. Fuer systematische Bewertung eignet sich ein Set fester Testqueries mit definierten "idealen" Top-Treffern, gegen das jede Aenderung an Gewichtung oder Function-Score automatisiert geprueft werden kann.
Fuer produktive Entscheidungen empfiehlt sich zusaetzlich echtes Nutzerverhalten: Klickrate auf Suchergebnisse, Absprungrate nach einer Suche und die Position des tatsaechlich gekauften Produkts im Suchergebnis liefern belastbarere Signale als isolierte Score-Werte. Ein A/B-Test, der zwei Boosting-Konfigurationen gegen echten Traffic vergleicht, ist der zuverlaessigste Weg, um zu pruefen, ob eine Anpassung der Such-Relevanz tatsaechlich zu mehr Conversions fuehrt.
9. Praxisbeispiel: Verfuegbarkeit und Neuheit als Boost-Faktor
Ein realistisches Szenario: Ein Modehaendler stellt fest, dass ausverkaufte Produkte trotz hoher textueller Relevanz weiterhin auf den ersten Suchergebnisplaetzen erscheinen, waehrend neue, verfuegbare Kollektionsartikel weiter unten stehen. Die Loesung kombiniert die in Abschnitt 6 gezeigte function_score-Query mit zwei spezifischen Funktionen: ein Filter-Boost fuer in_stock, der ausverkaufte Produkte nicht ausblendet, aber deutlich abwertet, und eine gauss-Decay-Funktion auf das Erstellungsdatum, die neue Artikel bevorzugt, ohne aeltere Bestseller komplett zu verdraengen.
Wichtig bei diesem Vorgehen: Die Gewichte zwischen textueller Such-Relevanz und geschaeftslogischen Faktoren muessen sorgfaeltig kalibriert werden. Ein zu starker Verfuegbarkeits-Boost kann dazu fuehren, dass ein exakter SKU-Treffer nicht mehr an erster Stelle steht, nur weil ein thematisch verwandtes, aber weniger relevantes Produkt zufaellig besser verfuegbar ist. Iteratives Testen mit der _explain-API und echten Suchanfragen aus den Logs ist deshalb Teil jeder seriösen Umsetzung.
Mironsoft
Such-Relevanz-Tuning und Elasticsearch-Boosting fuer Magento
Suchergebnisse, die zu eurem Sortiment passen?
Wir kalibrieren Search-Weight, bauen Function-Score-Queries fuer Verfuegbarkeit und Marge und messen die Wirkung mit echten Suchanfragen statt Bauchgefuehl.
Relevanz-Audit
Bestehende Search-Weights und Query-Struktur systematisch pruefen
Function-Score-Boosting
Verfuegbarkeit, Neuheit und Marge gezielt in die Rangfolge einbauen
Messbare Ergebnisse
Testquery-Sets und A/B-Tests fuer nachvollziehbare Relevanz-Entscheidungen
10. Zusammenfassung
Die Such-Relevanz in Magento entsteht aus dem Zusammenspiel dreier Ebenen: der Search-Weight-Konfiguration je Attribut, die den textuellen Grundscore beeinflusst, eigenen Query-Builder-Anpassungen fuer kontextabhaengige Faelle wie SKU-Suchen, und Function-Score-Queries fuer geschaeftslogische Faktoren wie Verfuegbarkeit, Neuheit oder Marge. Keine dieser Ebenen allein liefert optimale Ergebnisse, ihr Zusammenspiel entscheidet ueber die Qualitaet der Suche.
Wer die Such-Relevanz nachhaltig verbessern will, sollte Aenderungen immer messbar machen: mit der _explain-API fuer Einzelfaelle, mit festen Testquery-Sets fuer systematische Regression, und mit echtem Nutzerverhalten fuer die endgueltige Validierung. Diese Kombination aus technischer Steuerung und Messung verhindert, dass Relevanz-Tuning zur Bauchgefuehl-Uebung wird.
Such-Relevanz in Magento: das Wichtigste auf einen Blick
Search Weight
Attributgewichtung 1 bis 10 im Backend, wirkt als Boost-Faktor in der multi_match-Query.
Query-Builder-Plugin
Kontextabhaengige Gewichtung, etwa staerkerer SKU-Boost bei numerischen Suchbegriffen.
Function Score
Kombiniert Textrelevanz mit Verfuegbarkeit, Verkaufszahlen und Aktualitaet.
Messung
_explain-API, feste Testquery-Sets und A/B-Tests statt Bauchgefuehl.