Suchrelevanz in Magento 2 gezielt tunen
AI generated
M2
di.xml
Magento 2 · Suche · Relevanz · Merchandising
Suchrelevanz in Magento 2 gezielt tunen
von multi_match bis function_score

Eine technisch korrekte Suche, die trotzdem die falschen Produkte zuerst zeigt, kostet Umsatz, ohne dass es im Fehlerlog auftaucht. Suchrelevanz in Magento 2 zu tunen bedeutet, die zugrunde liegende multi_match-Query zu verstehen, Attribute gezielt zu gewichten und Business-Signale wie Verkaufszahlen und Lagerbestand aktiv in die Sortierung einfließen zu lassen.

19 Min. Lesezeit multi_match · function_score · Fuzzy · Boosting Magento 2.4.x · OpenSearch 2.x

1. Warum Relevanz mehr ist als Keyword-Matching

Suchrelevanz beschreibt, wie gut die Reihenfolge der Suchergebnisse mit dem übereinstimmt, was ein Kunde tatsächlich sucht und kaufen möchte. Reines Keyword-Matching, bei dem nur geprüft wird, ob ein Suchbegriff irgendwo im Produktdatensatz vorkommt, reicht dafür nicht aus. Zwei Produkte können denselben Suchbegriff exakt gleich oft enthalten und trotzdem völlig unterschiedlich relevant für den konkreten Suchkontext sein.

In Magento zeigt sich das besonders deutlich bei mehrdeutigen Suchbegriffen. Eine Suche nach einem Markennamen soll idealerweise zuerst die Hauptprodukte dieser Marke zeigen, nicht ein Zubehörteil, das die Marke nur in einer Fußnote der Beschreibung erwähnt. Suchrelevanz-Tuning bedeutet, genau diese Unterscheidung technisch abzubilden, durch Feldgewichtung, durch Business-Signale und durch eine bewusste Struktur der zugrunde liegenden Query.

Der wirtschaftliche Hebel ist erheblich: Kunden, die auf der ersten Ergebnisseite nichts Passendes finden, brechen die Suche meist ab, statt weiterzublättern. Jede Verbesserung der Suchrelevanz in den ersten Trefferpositionen wirkt sich direkt auf Conversion-Rate und Absprungrate der internen Suche aus, oft stärker als viele andere Optimierungen am Checkout oder an der Produktseite.

2. Wie Magento die Suchquery zusammensetzt

Magento baut für die Volltextsuche standardmäßig eine multi_match-Query gegen alle als searchable markierten Felder auf. Der Typ best_fields wird meist verwendet, wenn primär ein einzelnes Feld möglichst gut zum Suchbegriff passen soll, während most_fields die Relevanz über mehrere Felder hinweg summiert. Die Wahl zwischen diesen beiden Typen hat direkten Einfluss auf die Suchrelevanz, insbesondere bei Produkten mit sehr unterschiedlich langen Beschreibungstexten.


{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "wanderschuhe wasserdicht",
            "type": "best_fields",
            "fields": [
              "name^5",
              "sku^3",
              "description^1",
              "short_description^2"
            ],
            "tie_breaker": 0.3
          }
        }
      ],
      "filter": [
        { "term": { "visibility": 4 } },
        { "term": { "status": 1 } }
      ]
    }
  }
}

Der tie_breaker-Parameter ist ein oft übersehener Hebel für Suchrelevanz: Er sorgt dafür, dass zusätzliche Treffer in weiteren Feldern anteilig zum Score beitragen, statt komplett ignoriert zu werden, sobald das beste Feld gefunden wurde. Ohne diesen Parameter kann eine Suche, die in zwei Feldern gleichzeitig passt, denselben Score bekommen wie eine, die nur in einem Feld passt, was die Feinabstufung der Relevanz unnötig einschränkt.

3. search_weight und Boosting-Strategie je Attribut

Das Attributfeld Search Weight im Magento-Backend übersetzt sich direkt in den ^Gewicht-Boost der multi_match-Query, wie im vorherigen Codebeispiel an name^5 zu sehen. Eine durchdachte Suchrelevanz-Strategie beginnt mit einer Priorisierung: Produktname und Modellbezeichnung erhalten das höchste Gewicht, Kurzbeschreibung ein mittleres, die ausführliche Fließtextbeschreibung das niedrigste Gewicht, weil sie am ehesten zufällige Wortübereinstimmungen enthält.

Ein verbreiteter Fehler ist, allen durchsuchten Feldern dasselbe Gewicht zu belassen. Das führt dazu, dass ein Produkt, dessen Beschreibung den Suchbegriff zufällig mehrfach enthält, höher rankt als ein Produkt, dessen Name exakt dem Suchbegriff entspricht. Für Suchrelevanz gilt die Faustregel: Je kürzer und spezifischer ein Feld, desto höher sollte sein Gewicht sein, weil ein Treffer dort mit größerer Wahrscheinlichkeit tatsächlich relevant ist.

Auch die Reihenfolge der Boost-Vergabe zwischen Attributen sollte regelmäßig überprüft werden, insbesondere nach Sortimentserweiterungen. Ein neues Attribut mit hohem Gewicht, das versehentlich zu viele Produkte gleichzeitig matcht, kann die Suchrelevanz im gesamten Katalog verwässern, ohne dass der Effekt sofort auffällt.

4. Eigene Query-Bausteine per Plugin einbringen

Für Anpassungen, die über reine Gewichtung hinausgehen, bietet Magento das Interface Magento\Framework\Search\Request\QueryInterface sowie die Möglichkeit, per Plugin zusätzliche Query-Bausteine in die generierte Request-Struktur einzufügen. Ein typischer Anwendungsfall: Ein boost für Produkte, die aktuell im Sale sind, oder ein bool.should-Zweig, der exakte SKU-Treffer künstlich nach oben zieht, unabhängig vom Textscore.


<?php

declare(strict_types=1);

namespace Mironsoft\SearchRelevance\Plugin;

use Magento\Elasticsearch\SearchAdapter\QueryContainer;
use Magento\Framework\Search\RequestInterface;

/**
 * Adds a should clause that boosts exact SKU matches independent of text score.
 */
final class BoostExactSkuMatchPlugin
{
    /**
     * Injects an exact-match should clause for the sku field.
     *
     * @param QueryContainer $subject Original query container
     * @param array $result Assembled OpenSearch query array
     * @param RequestInterface $request Original search request
     * @return array
     */
    public function afterGetSearchQuery(
        QueryContainer $subject,
        array $result,
        RequestInterface $request
    ): array {
        $searchTerm = (string) $request->getQuery()->getValue();

        if ($searchTerm === '') {
            return $result;
        }

        $result['query']['bool']['should'][] = [
            'term' => [
                'sku' => [
                    'value' => strtoupper($searchTerm),
                    'boost' => 50,
                ],
            ],
        ];

        return $result;
    }
}

Wichtig für die Suchrelevanz: Ein zusätzlicher should-Zweig erhöht den Score nur additiv, verdrängt also nicht automatisch alle anderen Ergebnisse. Für eine harte Priorisierung, bei der ein exakter SKU-Treffer immer an erster Stelle stehen soll, ist eine Kombination aus hohem Boost-Wert und ausreichendem minimum_should_match nötig, sonst können andere Treffer mit vielen kleineren Boosts theoretisch aufholen.

5. Function Score: Popularität, Marge und Lagerbestand einbeziehen

Reiner Textscore berücksichtigt keine Business-Signale wie Verkaufszahlen, Lagerbestand oder Marge. Die function_score-Query löst genau dieses Problem, indem sie den Textscore mit zusätzlichen Faktoren multipliziert oder addiert. Für Suchrelevanz mit echtem Geschäftsbezug ist das oft der entscheidende Baustein: Ein Produkt mit hohen Verkaufszahlen sollte bei ansonsten ähnlicher textlicher Relevanz vor einem Ladenhüter erscheinen.


{
  "query": {
    "function_score": {
      "query": {
        "multi_match": {
          "query": "laufschuh",
          "fields": ["name^5", "description^1"]
        }
      },
      "functions": [
        {
          "field_value_factor": {
            "field": "sales_count_30d",
            "factor": 0.1,
            "modifier": "log1p",
            "missing": 0
          }
        },
        {
          "filter": { "term": { "in_stock": true } },
          "weight": 1.5
        },
        {
          "filter": { "range": { "special_price": { "gt": 0 } } },
          "weight": 1.2
        }
      ],
      "score_mode": "sum",
      "boost_mode": "multiply"
    }
  }
}

Der Modifier log1p ist bei field_value_factor fast immer die richtige Wahl für Suchrelevanz-Signale wie Verkaufszahlen, weil er große Unterschiede dämpft. Ohne diese Dämpfung würde ein einzelnes extrem populäres Produkt jede andere Textrelevanz überstrahlen. Das Feld sales_count_30d muss dafür als eigenes, regelmäßig aktualisiertes Attribut im Produktindex vorliegen, meist über einen eigenen Indexer oder Cronjob befüllt.

6. Fuzzy-Matching und Toleranz gegen Tippfehler

Ein erheblicher Anteil realer Suchanfragen enthält Tippfehler, insbesondere auf mobilen Geräten. Ohne Fuzzy-Matching führen diese Anfragen zu Null-Treffer-Seiten, obwohl das gesuchte Produkt existiert. Der Parameter fuzziness in der multi_match-Query erlaubt eine begrenzte Anzahl an Zeichenabweichungen (Levenshtein-Distanz), typischerweise über AUTO gesteuert, das die Toleranz automatisch an die Wortlänge anpasst.

Für Suchrelevanz ist hier Vorsicht geboten: Zu aggressives Fuzzy-Matching erzeugt False-Positive-Treffer bei kurzen Wörtern, wo bereits eine kleine Abweichung die Bedeutung komplett verändert. Deshalb sollte fuzziness nur auf Feldern mit ausreichend langen Werten aktiviert werden, meist auf name und description, nicht aber auf kurzen Codes wie sku, wo Fuzzy-Matching mehr Schaden als Nutzen anrichtet.


{
  "multi_match": {
    "query": "wanderschue",
    "fields": ["name^5", "description^1"],
    "fuzziness": "AUTO",
    "prefix_length": 2,
    "max_expansions": 30
  }
}

Der Parameter prefix_length verlangt, dass die ersten Zeichen exakt übereinstimmen, bevor Fuzzy-Matching greift, was die Rechenlast reduziert und gleichzeitig unsinnige Treffer verhindert, bei denen nur das Wortende zufällig ähnlich ist.

7. A/B-Testing und Messung der Suchrelevanz

Suchrelevanz-Tuning ohne Messung ist reines Bauchgefühl. Der zuverlässigste Indikator ist die Klickrate auf die ersten drei bis fünf Suchergebnisse im Verhältnis zur Gesamtzahl der Suchen mit demselben Begriff. Sinkt diese Klickrate nach einer Änderung, hat sich die Relevanz eher verschlechtert, auch wenn die Änderung auf dem Papier sinnvoll erschien.

Für belastbare Aussagen empfiehlt sich echtes A/B-Testing: Ein Teil der Suchanfragen läuft über die alte Query-Konfiguration, ein Teil über die neue, und beide Gruppen werden über mindestens zwei Wochen anhand von Klickrate, Conversion-Rate der Suche und Absprungrate verglichen. Ergänzend liefert die Auswertung von Null-Treffer-Suchen (No-Result-Searches) wertvolle Hinweise, welche Suchbegriffe trotz vorhandenem Sortiment ins Leere laufen, was oft eher an Synonymen als an Suchrelevanz-Gewichtung liegt, aber eng damit zusammenhängt.

8. Typische Stolperfallen bei Relevanz-Tuning

Der häufigste Fehler ist, alle Anpassungen gleichzeitig vorzunehmen, Gewichte, Function Score und Fuzzy-Matching in einem einzigen Deployment. Verschlechtert sich die Suchrelevanz danach, lässt sich die Ursache kaum isolieren. Änderungen sollten einzeln ausgerollt und einzeln gemessen werden, auch wenn das mehr Iterationen bedeutet.

Ein zweiter Stolperstein: Function-Score-Faktoren, die auf veralteten oder selten aktualisierten Feldern basieren. Wird sales_count_30d nur einmal wöchentlich per Cronjob aktualisiert, spiegelt die Suchrelevanz tagelang eine überholte Verkaufslage wider, was besonders bei kurzfristigen Kampagnen oder Sale-Aktionen zu falschen Rankings führt. Ein dritter Fehler: Boost-Werte werden nach Gefühl gewählt, ohne die tatsächliche Score-Verteilung im konkreten Katalog zu prüfen, was leicht zu Über- oder Unterkompensation führt.

9. Relevanz-Ansätze im direkten Vergleich

Die folgende Tabelle stellt gängige Stellschrauben für Suchrelevanz gegenüber und zeigt, wann welcher Ansatz greift.

Ansatz Löst Risiko bei Übertreibung Typischer Einsatz
Feldgewichtung (^Boost) Priorisiert Name vor Fließtext Verdrängt inhaltlich passende Treffer Basiskonfiguration jeder Query
function_score Business-Signale einbeziehen Popularität überstrahlt Textrelevanz Bestseller, Lagerbestand priorisieren
Fuzzy-Matching Tippfehler abfangen False Positives bei kurzen Wörtern Name, Description, nicht SKU
tie_breaker Feinabstufung bei Mehrfachtreffern Kaum, wirkt moderat Immer aktivieren

Diese Übersicht zeigt: Die wirksamsten Stellschrauben für Suchrelevanz sind selten spektakulär, sondern präzise dosierte Anpassungen, die einzeln gemessen werden.

Mironsoft

Magento-Suche, Relevanz-Tuning und Merchandising-Beratung

Findet eure Suche wirklich die richtigen Produkte zuerst?

Wir analysieren eure aktuelle Suchquery, messen die Klickrate der ersten Trefferpositionen und optimieren Feldgewichtung, Function Score und Fuzzy-Matching auf Basis echter Suchdaten.

Relevanz-Audit

Analyse der Top-Suchbegriffe und ihrer aktuellen Trefferqualität

Function Score Setup

Business-Signale wie Lagerbestand und Verkaufszahlen einbinden

A/B-Testing

Messbare Vergleiche zwischen alter und neuer Query-Konfiguration

10. Zusammenfassung

Gute Suchrelevanz in Magento entsteht aus dem Zusammenspiel mehrerer Ebenen: einer sinnvoll gewichteten multi_match-Query als Fundament, function_score für Business-Signale wie Verkaufszahlen und Lagerbestand, kontrolliertem Fuzzy-Matching gegen Tippfehler und einem tie_breaker, der Mehrfachtreffer fair bewertet. Keine dieser Stellschrauben wirkt isoliert richtig, sie müssen aufeinander abgestimmt werden.

Der wichtigste Erfolgsfaktor ist Messbarkeit: Klickrate auf die ersten Trefferpositionen, Conversion-Rate der internen Suche und die Auswertung von Null-Treffer-Anfragen zeigen, ob eine Änderung an der Suchrelevanz tatsächlich hilft oder nur auf dem Papier plausibel klingt. Änderungen einzeln auszurollen und einzeln zu messen, ist aufwendiger, aber der einzige Weg, Ursache und Wirkung sauber zu trennen.

Suchrelevanz in Magento 2 — Das Wichtigste auf einen Blick

Feldgewichtung als Fundament

Name deutlich höher gewichten als Fließtext, sonst gewinnen zufällige Wortübereinstimmungen.

function_score für Business-Signale

Verkaufszahlen, Lagerbestand und Marge mit log1p-Dämpfung in die Sortierung einbeziehen.

Fuzzy-Matching gezielt einsetzen

Nur auf langen Textfeldern aktivieren, nie auf kurzen Codes wie SKU.

Messen statt raten

Klickrate, Conversion und Null-Treffer-Suchen vor und nach jeder Änderung vergleichen.

11. FAQ: Suchrelevanz in Magento 2

1Was bedeutet Suchrelevanz konkret?
Wie gut die Ergebnisreihenfolge mit der tatsächlichen Kundenintention übereinstimmt, nicht nur ob ein Wort vorkommt.
2Was macht tie_breaker?
Lässt zusätzliche Feldtreffer anteilig in den Score einfließen, statt sie komplett zu ignorieren.
3Wie Feldgewichte verteilen?
Kurze, spezifische Felder wie name höher gewichten als lange Fließtexte.
4Was ist function_score?
Kombiniert Textscore mit Business-Signalen wie Verkaufszahlen oder Lagerbestand.
5Warum log1p verwenden?
Dämpft große Unterschiede, damit ein extrem populäres Produkt nicht alles überstrahlt.
6Fuzzy-Matching auf alle Felder?
Nein, nur auf langen Textfeldern, nicht auf kurzen Codes wie SKU.
7Wie Relevanz-Erfolg messen?
Klickrate, Conversion-Rate der Suche und Null-Treffer-Häufigkeit vor und nach der Änderung.
8Warum einzeln ausrollen?
Bei gleichzeitigen Änderungen lässt sich die Ursache einer Verschlechterung kaum isolieren.
9best_fields vs. most_fields?
best_fields bewertet das beste Feld, most_fields summiert über mehrere Felder hinweg.
10Wie oft Verkaufszahlen aktualisieren?
Möglichst täglich, bei Kampagnen häufiger, sonst spiegelt die Relevanz eine veraltete Verkaufslage.