PrestaShop Suchindex: Warum die Neuindizierung von Produkten die Suche repariert

Frage veröffentlicht Antwort veröffentlicht 1443 Aufrufe

Wie die PrestaShop-Suche intern funktioniert

PrestaShop enthält eine integrierte Produktsuchmaschine, die auf einem Volltextindex basiert, der direkt in der MySQL-Datenbank gespeichert ist. Anders als bei externen Suchdiensten befindet sich dieser Index neben Ihren Produktdaten in derselben Datenbank, was bedeutet, dass Abfragen schnell sind, der Index aber explizit gepflegt werden muss, um aktuell zu bleiben. Das Verständnis der Funktionsweise dieses Suchsystems ist der erste Schritt zur Diagnose und Behebung von Suchproblemen.

Shop Parameters > Search mit Indexierungs- und Alias-Konfiguration
Sucheinstellungen - Status der Produktindexierung und Suchoptionen.

Wenn ein Kunde eine Suchanfrage in die Suchleiste Ihres Shops eingibt, durchsucht PrestaShop nicht jeden Produktnamen und jede Beschreibung in Echtzeit. Stattdessen sucht es die Suchbegriffe in einem vorbereiteten Index nach, der einzelne Wörter den Produkten zuordnet. Dieser Index wird erstellt, indem Produkttextfelder in einzelne Wörter zerlegt (Tokenisierung), normalisiert (Kleinschreibung, Entfernung von Akzenten) und die Beziehung zwischen jedem Wort und den Produkten, in denen es vorkommt, zusammen mit einer Relevanzgewichtung gespeichert werden.

Dieser Ansatz entspricht grundsätzlich der Funktionsweise von Suchmaschinen wie Google, nur in viel kleinerem Maßstab. Der Kompromiss besteht darin, dass der Index neu aufgebaut werden muss, wann immer sich Produktdaten auf eine Weise ändern, die von der automatischen Indizierung nicht erfasst wird, was die Hauptursache der meisten Suchprobleme in PrestaShop ist.

Die Such-Datenbanktabellen

PrestaShops Suchindex ist über mehrere Datenbanktabellen verteilt, die jeweils einen bestimmten Zweck in der Such-Pipeline erfüllen.

SET @id_product = 123;

SELECT COUNT(*) AS indexed_words
FROM ps_search_index
WHERE id_product = @id_product;

SELECT sw.id_word, sw.word, si.weight
FROM ps_search_index si
JOIN ps_search_word sw ON sw.id_word = si.id_word
WHERE si.id_product = @id_product
ORDER BY si.weight DESC
LIMIT 50;

Neuindizierung über das Back Office und die Cron-URL

Die unterstützten Steuerelemente zum Neuaufbau befinden sich im Back Office unter Shop-Parameter > Suche, im Abschnitt zur Indizierung.

Verwenden Sie Fehlende Produkte zum Index hinzufügen für einen inkrementellen Durchlauf oder Den gesamten Index neu aufbauen, wenn vorhandene indexierte Daten nach Importen, direkten Datenbankänderungen, Sprachänderungen oder Änderungen an den Suchgewichtungen veraltet sein könnten.

Für die Automatisierung verwenden Sie die Cron-URL des Indexers, die auf derselben Back-Office-Seite angezeigt wird. Sie verweist auf den Such-Cron-Controller von PrestaShop, zum Beispiel index.php?controller=searchcron&...&token=...&full=1. Das Token und die vollständige URL werden vom Shop generiert. Kopieren Sie sie daher aus Shop-Parameter > Suche, anstatt die URL manuell zu erstellen.

Die Cron-URL des Indexers eignet sich für sehr große Kataloge (Zehntausende von Produkten über mehrere Sprachen), weil sie per HTTP GET geplant aufgerufen werden kann und Browser-Timeouts vermeidet.

Wenn Sie PrestaShop in Docker ausführen, führen Sie den Befehl im Container-Kontext aus, in dem PHP und die PrestaShop-Codebasis verfügbar sind. Stellen Sie sicher, dass Sie ihn als Webserver-Benutzer ausführen, um Dateiberechtigungsprobleme mit Cache-Dateien zu vermeiden, die während des Prozesses generiert werden.

Automatisierung der Neuindizierung

Wenn Ihr Shop auf automatisierte Produktimporte oder externe Datensynchronisation angewiesen ist, planen Sie regelmäßige Neuindizierungen als Cronjob. Eine nächtliche Neuindizierung stellt sicher, dass alle Produkte, die durch automatisierte Prozesse hinzugefügt oder geändert wurden, am nächsten Tag durchsuchbar sind. Der Cron-Eintrag sollte die Indexer-Cron-URL per HTTP GET nach einem Zeitplan aufrufen.

Beachten Sie, dass die Neuindizierung die Suchtabellen während des Neuaufbaus kurzzeitig sperrt. Planen Sie die Neuindizierung bei einem ausgelasteten Shop während verkehrsarmer Zeiten, um die Suchverfügbarkeit für aktive Kunden nicht zu beeinträchtigen.

Gewichtungskonfiguration: Steuerung der Suchrelevanz

PrestaShop ermöglicht es Ihnen, zu konfigurieren, wie viel Gewicht verschiedene Produktfelder in den Suchergebnissen tragen. Dies ist eine der leistungsfähigsten und am wenigsten genutzten Funktionen des integrierten Suchsystems.

Verfügbare Gewichtungsfelder

Die Gewichtungskonfiguration finden Sie unter Shopparameter > Suche. Sie können jedem dieser Produktfelder eine Gewichtung zuweisen (typischerweise 1 bis 10, wobei auch höhere Werte funktionieren):

Produktname: Dieser sollte typischerweise die höchste Gewichtung haben. Wenn ein Kunde ein Produkt nach seinem Namen sucht, sollte das Produkt mit genau diesem Namen zuerst erscheinen.

Referenz: Produktreferenzcodes werden häufig von B2B-Kunden verwendet, die die genaue Artikelnummer kennen, die sie benötigen. Eine moderate Gewichtung stellt sicher, dass referenzbasierte Suchen gut funktionieren, ohne namensbasierte Suchen zu überstimmen.

Kurzbeschreibung: Die Kurzbeschreibung enthält oft wichtige Verkaufsargumente und Produkteigenschaften. Eine moderate Gewichtung ist angemessen.

Beschreibung: Die vollständige Beschreibung enthält den meisten Text und daher die meisten potenziellen Keyword-Übereinstimmungen. Da sie jedoch so viel Text enthält, kann eine hohe Gewichtung irrelevante Übereinstimmungen verursachen, bei denen ein Suchbegriff zufällig in einer langen Beschreibung vorkommt. Eine niedrigere Gewichtung im Vergleich zum Produktnamen wird empfohlen.

Kategorie: Die Einbeziehung von Kategorienamen in die Suche ermöglicht es Kunden, Produkte nach Kategoriebegriffen zu finden, auch wenn diese Begriffe nicht im Text des Produkts selbst vorkommen.

Marke (Hersteller): Kunden suchen häufig nach Markenname. Eine moderate bis hohe Gewichtung stellt sicher, dass Markensuchen relevante Ergebnisse liefern.

Tags: Tags sind explizit zugewiesene Suchbegriffe für Produkte. Eine hohe Gewichtung für Tags gibt Ihnen direkte Kontrolle darüber, welche Produkte für bestimmte Suchanfragen erscheinen.

Attribute: Produktattributwerte (Größe, Farbe, Material) können in den Suchindex aufgenommen werden. Dies ermöglicht Suchen wie "rot XL", um Produkte mit diesen Attributkombinationen zurückzugeben.

Eigenschaften: Produkteigenschaftswerte (Gewicht, Abmessungen, Materialtyp) können ebenfalls indiziert werden.

Gewichtungsstrategie

Eine vernünftige Ausgangskonfiguration könnte sein: Produktname auf 6, Referenz auf 4, Kurzbeschreibung auf 3, Beschreibung auf 1, Kategorie auf 2, Hersteller auf 3, Tags auf 4, Attribute auf 2, Eigenschaften auf 2. Die optimalen Gewichtungen hängen jedoch vollständig von Ihrem Katalog und dem Suchverhalten Ihrer Kunden ab.

Wenn Ihre Kunden häufig nach Artikelnummer oder Referenznummer suchen, erhöhen Sie die Referenzgewichtung. Wenn Markensuchen wichtig sind, erhöhen Sie die Herstellergewichtung. Wenn Sie feststellen, dass lange Beschreibungen irrelevante Ergebnisse an hoher Position verursachen, reduzieren Sie die Beschreibungsgewichtung oder setzen Sie sie auf Null, um Beschreibungen vollständig vom Index auszuschließen.

Führen Sie nach der Änderung der Gewichtungen immer eine vollständige Neuindizierung durch, damit die neuen Werte für alle Produkte wirksam werden.

Häufige Suchprobleme und Behebungen

Produkte erscheinen nicht in den Suchergebnissen

Dies ist die häufigste Suchbeschwerde. Ein Produkt existiert im Katalog, aber die Suche nach seinem Namen liefert keine Ergebnisse. Ursachen umfassen: Das Produkt wurde durch einen Import hinzugefügt, der die Indizierung nicht ausgelöst hat, das Produkt ist deaktiviert oder nicht auf Lager und die Suche ist so konfiguriert, dass solche Produkte ausgeschlossen werden, oder der Suchindex ist beschädigt.

Behebung: Überprüfen Sie zunächst, ob das Produkt aktiv und sichtbar ist. Führen Sie dann eine vollständige Neuindizierung durch. Wenn das Produkt immer noch nicht erscheint, prüfen Sie, ob der Produktname Sonderzeichen enthält, die bei der Tokenisierung entfernt werden könnten, und ob die Einstellung für die minimale Wortlänge (in der Suchkonfiguration) kurze Wörter aus dem Produktnamen ausschließt.

Falsche Produkte an erster Stelle

Wenn eine Suche nach "blaues Widget" ein Produkt namens "Widget-Halter" vor dem eigentlichen Produkt "blaues Widget" zurückgibt, liegt es meist an der Gewichtungskonfiguration. Das Produkt, das höher rangiert, hat mehr Gesamtgewichtung über alle indizierten Felder angesammelt. Vielleicht erscheint "Widget" vielfach in der Beschreibung des Halterprodukts, und mit einer hohen Beschreibungsgewichtung überwiegen diese Vorkommen einen einzelnen Treffer im Produktnamen.

Behebung: Passen Sie die Feldgewichtungen an, um den Produktnamen zu priorisieren. Setzen Sie die Produktnamensgewichtung deutlich höher als die Beschreibungsgewichtung. Indizieren Sie nach Änderungen neu.

Suche liefert zu viele irrelevante Ergebnisse

Dies passiert, wenn die Beschreibungsgewichtung zu hoch ist oder wenn häufige Wörter in vielen Produktbeschreibungen vorkommen. Eine Suche nach "Premium" gibt jedes Produkt zurück, dessen Beschreibung das Wort "Premium" enthält, auch wenn es keine definierende Eigenschaft dieser Produkte ist.

Behebung: Reduzieren Sie die Beschreibungsgewichtung oder verwenden Sie die Funktion für gesperrte Wörter, um häufige, nicht-unterscheidende Wörter vom Index auszuschließen. Die Sperrliste wird unter Shopparameter > Suche konfiguriert und ermöglicht es Ihnen, Wörter anzugeben, die bei der Indizierung ignoriert werden sollen.

Suche findet keine Teilübereinstimmungen

PrestaShops integrierte Suche unterstützt keine echte Fuzzy-Suche. Wenn ein Kunde nach "Schuh" sucht, wird er keine Produkte finden, die nur das Wort "Schuhe" enthalten, es sei denn, die Stemming- oder Alias-Funktionen behandeln die Variation. Dies ist eine grundlegende Einschränkung des wortbasierten Index-Ansatzes.

Behebung: Verwenden Sie die Alias-Funktion, um häufige Variationen zuzuordnen ("Schuh" zu "Schuhe", "TV" zu "Fernseher"). Für eine umfassendere Teilübereinstimmung sollten Sie eine externe Suchmaschine wie Elasticsearch in Betracht ziehen.

Akzentzeichen verursachen Fehlschläge

PrestaShop normalisiert Akzentzeichen während der Indizierung (z. B. Konvertierung von "Cafe" und "Café" in dieselbe Grundform). Wenn diese Normalisierung nicht korrekt funktioniert, können Suchen mit oder ohne Akzente unterschiedliche Ergebnisse liefern.

Behebung: Überprüfen Sie, ob in der Suchkonfiguration die Akzententfernung aktiviert ist. Indizieren Sie nach der Überprüfung neu. Wenn das Problem bestehen bleibt, überprüfen Sie den Zeichensatz und die Collation der Datenbank, da nicht übereinstimmende Kodierungen die Textnormalisierung stören können.

Optimierung der Suchleistung

Für Shops mit großen Katalogen (10.000+ Produkte) kann die Suchleistung zum Problem werden. Die integrierte Suche führt bei jeder Suchanfrage Datenbankabfragen gegen die Indextabellen durch, und mit einem großen Index können diese Abfragen langsam werden.

Datenbankindizierung

Stellen Sie sicher, dass die Tabellen ps_search_word und ps_search_index ordnungsgemäße Datenbankindizes haben. PrestaShop erstellt diese standardmäßig, aber wenn die Tabellen geändert oder neu aufgebaut wurden, können Indizes fehlen. Die wichtigsten Indizes sind auf id_word und id_lang in ps_search_word sowie auf id_product und id_word in ps_search_index.

Minimale Wortlänge

Die Einstellung der minimalen Wortlänge steuert das kürzeste Wort, das indiziert wird. Der Standard ist normalerweise 3 Zeichen, was bedeutet, dass ein- und zweistellige Wörter ausgeschlossen werden. Eine Erhöhung auf 4 verringert die Indexgröße und kann die Suchgeschwindigkeit verbessern, bedeutet aber, dass Suchen nach kurzen Begriffen wie "XL" oder "TV" nicht funktionieren. Finden Sie ein Gleichgewicht zwischen Indexgröße und Ihren Suchanforderungen.

Gesperrte Wörter

Das Hinzufügen häufiger Wörter ("der", "und", "für", "mit") zur Sperrliste reduziert die Indexgröße erheblich, da diese Wörter in fast jeder Produktbeschreibung vorkommen. Kleinere Indextabellen bedeuten schnellere Abfragen.

Tabellenoptimierung

Führen Sie nach einer vollständigen Neuindizierung OPTIMIZE TABLE ps_search_word, ps_search_index in MySQL aus. Der Neuindizierungsprozess löscht und fügt große Mengen von Zeilen ein, was zu einer Fragmentierung der Tabellen führen kann. Die Optimierung gibt diesen Speicherplatz zurück und verbessert die Abfrageleistung.

Elasticsearch als Alternative

Für Shops, die die integrierte Suche von PrestaShop überwachsen haben, bietet Elasticsearch ein bedeutendes Upgrade sowohl in der Suchqualität als auch in der Leistung. Elasticsearch ist eine dedizierte Suchmaschine, die als separater Dienst läuft und Funktionen bietet, die die integrierte MySQL-basierte Suche nicht bieten kann.

Was Elasticsearch hinzufügt

Fuzzy-Matching ermöglicht es Elasticsearch, Ergebnisse zu finden, auch wenn der Suchbegriff falsch geschrieben ist. Eine Suche nach "Leedr" findet trotzdem "Leder"-Produkte. Stemming reduziert Wörter auf ihre Grundform, sodass "laufend", "läuft" und "lief" alle Produkte finden, die eine dieser Variationen enthalten. Synonymunterstützung lässt Sie Beziehungen zwischen Wörtern definieren ("Sofa" und "Couch") auf der Suchmaschinenebene statt durch manuelle Aliase.

Facettierte Suche (Filterung von Ergebnissen nach Attributen wie Preisbereich, Farbe, Marke) ist mit Elasticsearch drastisch schneller, da es genau für diese Art von Aggregationsabfragen konzipiert ist. Autovervollständigungsvorschläge und "Meinten Sie"-Funktionen sind ebenfalls native Elasticsearch-Fähigkeiten.

Leistungsmäßig bewältigt Elasticsearch große Kataloge (100.000+ Produkte) mit Antwortzeiten unter einer Sekunde, da es invertierte Indizes verwendet, die für Volltextsuche optimiert sind, im Gegensatz zu MySQL, das primär für relationale Daten konzipiert ist.

Integration mit PrestaShop

Mehrere PrestaShop-Module bieten Elasticsearch-Integration. Diese Module ersetzen typischerweise den Standard-Suchcontroller durch einen, der Elasticsearch statt der MySQL-Suchtabellen abfragt. Produktdaten werden von PrestaShop an Elasticsearch synchronisiert, entweder in Echtzeit (beim Produktspeichern) oder über periodische Batch-Synchronisation.

Der Betrieb von Elasticsearch erfordert einen dedizierten Server oder Container mit ausreichend RAM (mindestens 2 GB für kleine Kataloge, mehr für größere). Es erhöht die betriebliche Komplexität, da Sie nun einen weiteren Dienst überwachen und warten müssen. Für viele kleine bis mittlere Shops ist die integrierte Suche mit ordnungsgemäßer Gewichtungskonfiguration und regelmäßiger Neuindizierung ausreichend.

Wann man Elasticsearch in Betracht ziehen sollte

Ziehen Sie Elasticsearch in Betracht, wenn Ihr Katalog 10.000 Produkte übersteigt und die Suchleistung nachlässt, wenn Kunden häufig Suchbegriffe falsch schreiben und Fuzzy-Matching erwarten, wenn Sie erweiterte Funktionen wie Autovervollständigung oder facettierte Filterung benötigen, oder wenn die Suchqualität ein Wettbewerbsvorteil für Ihr Geschäft ist (B2B-Shops mit komplexen Produktkatalogen zum Beispiel).

Die Neuindizierungs-Checkliste

Wenn die Suche in Ihrem PrestaShop-Shop nicht korrekt funktioniert, folgen Sie diesem Diagnose- und Behebungsprozess. Erstens: Überprüfen Sie, ob die betroffenen Produkte aktiv, sichtbar und auf Lager sind (wenn Ihre Suche nicht vorrätige Produkte ausschließt). Zweitens: Prüfen Sie die Suchgewichtungskonfiguration und stellen Sie sicher, dass sie Ihren Prioritäten entspricht. Drittens: Führen Sie einen vollständigen Suchindex-Neuaufbau über Shop-Parameter > Suche oder die Indexer-Cron-URL durch. Viertens: Leeren Sie den PrestaShop-Cache nach der Neuindizierung. Fünftens: Testen Sie die Suche mit bestimmten Begriffen, um die Behebung zu überprüfen. Sechstens: Wenn Probleme bestehen bleiben, prüfen Sie die Tabellen ps_search_word und ps_search_index direkt, um zu überprüfen, ob die problematischen Produkte Einträge haben. Siebtens: Wenn der Index korrekt erscheint, die Suche aber immer noch fehlschlägt, untersuchen Sie die Suchcontroller-Logik und alle Module, die sie überschreiben.

Regelmäßige Neuindizierung in Kombination mit durchdachter Gewichtungskonfiguration und einer gut gepflegten Aliasliste hält PrestaShops integrierte Suche für die Mehrheit der Shops zuverlässig funktionierend. Für diejenigen, die mehr benötigen, bietet Elasticsearch einen Upgrade-Pfad, ohne dass ein Plattformwechsel erforderlich ist.

Weitere Diagnosen in unserem PrestaShop-Troubleshooting-Leitfaden.

War diese Antwort hilfreich?

Noch Fragen?

Sie finden nicht, wonach Sie suchen? Senden Sie uns Ihre Frage und wir melden uns bei Ihnen.

Lade ...
Nach oben