Suche funktioniert sporadisch nicht

Guten Morgen, da es Shopware offiziell nicht interessiert, erstell ich jetzt mal ein Thread, denn der Fehler ist durchaus folgenschwer für die Conversion und vorallem, weil es einer dieser Fehler ist, die man im schlimmsten Fall gar nicht mitbekommt. Hier gehts zum geschlossenen Ticket: http://jira.shopware.de/Widgets/Jira/?ticket=SW-6046 Wie dort beschrieben, werden bei uns regelmäßig Suchbegriffe nicht gefunden. Ich kann es nicht reproduzieren und sehe es auch nur zufällig, wenn ich in Piwik stichprobenartig Kundensuchen nachstelle. Zu bestimmten Begriffen, die sonst ein Ergebnis liefern, findet Shopware plötzlich nichts. Manchmal passiert es, dass zu gar keinem Suchbegriff ein Ergebnis angezeigt wird. Helfen tut dann idR nur ein Löschen des Caches im Backend, bis der Fehler wieder auftritt. Folgenschwer ist der Fehler deshalb, weil ein Kunde im Zweifel nach einem Artikel sucht, laut Suche dieser Artikel in eurem Shop nicht existiert und der Kunde in der Folge weiterzieht, oder jedenfalls diesen Artikel nicht mitbestellt. Besonders problematisch deshalb, weil man als Shopbetreiber normalerweise nicht alle 2-3 Tage die Suche im eigenen Shop kontrolliert. Ob es ein Fehler in Shopware ist, oder in unserer speziellen Konfiguration, kann ich nicht sagen. Aber der Fehler tritt definitiv auf. Auch sehe ich anders als Shopware nicht, was das mit einem veralteten Cache zu tun haben soll, da sich die Artikel nicht ändern.

Hallo Ade, wie in dem Ticket beschrieben muss das Verhalten am Cache liegen, da es in keiner Konstellation reproduzierbar ist. Das Verhalten tritt natürlich auf, wenn der Intervall, im Standard 24h, abgelaufen ist und dann Suchanfragen laufen. In dem Moment wird die gesamte Tabelle geleert und der Suchcache neu aufgebaut. Genau bei diesem Prozess werden dann keine Artikel gefunden, da die Suche diese erst wieder kennt, wenn der gesamte Cache aufgebaut wurde. Du kannst den gesamten Prozess aber auch per Cronjob auslagern und z.B. nachts automatisch den gesamten Cache neu aufbauen lassen. Irgendwann muss die Suche aber aktualisiert werden. Diese automatische Funktion gibt es für Shopware 3 aber auch für Shopware 4 http://wiki.shopware.de/Plugin-CronRefr … l_698.html Viele Grüße Sebastian

Hallo Sebastian, danke für die Rückmeldung. Aber ehrlich gesagt habe ich die Antwort nicht so recht verstanden. Der Cache wird nach x Stunden bei der nächsten Abfrage gelöscht und neu aufgebaut. Soweit bin ich noch mitgekommen. Aber wo ist die Verbindung zu dem geschilderten Fehler - dass also regelmäßig keine Ergebnisse angezeigt werden?! Kunde sucht um 12:05Uhr nach einem Begriff und scheint nichts zu finden. Am Abend teste ich einige Suchanfragen und kriege ebenfalls keine Ergebnisse… Schöne Grüße Ade

Hallo, vielleicht wird der Cache auch manuell oder über einen anderen Prozess angestoßen. Die Suche kann nur vollständig über den gesamten Shop funktionieren, wenn der Cache vollständig aufgebaut ist. Der Aufbau des Caches kann nach Leerung, je nach Größe des Shops, einige Zeit in Anspruch nehmen. Während dieses Aufbaus findet man dann also nur eingeschränkt Artikel. Daher die Empfehlung, manuell einmal gar keine Caches zu leeren und mit dem CronRefresh z.B. nachts die Suche neu aufbauen zu lassen. Dann kannst du das am Folgetag genau beobachten.

Hallo, danke für die Ausführung. Ich werde das mit dem Cronjob mal testen. Allerdings - auch auf die Gefahr hin, schwer von Begriff zu wirken - verstehe ich immernoch nicht, wie es zu dem Fehler kommt. Unser Shop hat insgesamt 200 Artikel. Wenn ich den Cache manuell lösche, dauert die erste Suchanfrage 2-3sec. Wie es daher passieren soll, dass der Cache bei der Suche noch nicht aufgebaut ist, erschließt sich mir nicht.

Hallo, der Cache wird durch einen Frontend-Aufruf gestartet. Also durch die erste Suchanfrage. Dann kann es natürlich vorkommen, dass dieser in dem Moment gerade erst angefangen wird aufzubauen.

Guten Tag, ok - das deckt sich mit meinem Verständnis der Suchfunktion. Dann kann es aber wirklich kein Fehler beim Aufbau des Caches sein. Der Cache wird bei unseren 200 Artikeln innerhalb von ~2sec aufgebaut. Außerdem tritt der Fehler noch Stunden nach dem Suchaufruf des Kunden auf. Ich denke, ein Zusammenfallen mit der Erstellung des Caches kann daher ausgeschlossen werden. Dann stellt sich aber weiterhin die Frage: warum liefert die Suche in regelmäßigen Abständen keine Ergebnisse?

Hallo Ade, da können natürlich andere Faktoren eine Rolle spielen. Ich kenne dein System bzw. die Umgebung nicht. Du kannst natürlich die DB beobachten. Also die Größe des DB-Caches der Suche. Die Größe muss ja identisch sein bzw. für 24h bleiben. Ich weiß auch nicht ob es eine weitere Schnittstelle gibt oder Updates im Shop vorgenommen werden. Wir sehen die Artikel aus (Bezeichnung, besondere Merkmale). Die Suche kann z.B. auch nicht korrekt arbeiten, sollten alle Artikel den selben Namen besitzen. Wird die neueste Shopware eingesetzt? Bisher ist mir wirklich kein einziger Fall bekannt, wo das beschrieben Verhalten so auftritt oder aufgetreten ist. Auch nicht bei größeren Shops. Sebastian

Guten Abend Sebastian, daher hatte ich sicherheitshalber geschrieben, dass der Fehler durchaus in unserer speziellen Konfiguration liegen kann. Umgekehrt würde ich das Argument, dass der Fehler noch nie aufgetreten ist nicht zu hoch gewichten. Denn es fällt idR eben nicht auf. Wir werden mal die DB beobachten und beide Varianten vergleichen (funktionierend und nicht) Eigentlich selbstverständlich, aber daran habe ich bisher gar nicht gedacht: wir haben in der Tat vereinzelt Artikel, die den gleichen Namen haben. Hersteller und Artikelnummer sind unterschiedlich, aber der Name ist identisch. Wenn die Suche normal funktioniert, werden bei Eingabe des entsprechenden Suchbegriffes beide Artikel gefunden. Aber eventuell bringt das die Suche / den Cache in bestimmten Situationen durcheinander?!

Moin, du kannst auch mal folgende Query via PHPMyAdmin ausführen: SELECT \* FROM `s_statistics_search` s1 WHERE s1.results = 0 AND (SELECT results FROM s\_statistics\_search s2 WHERE s2.results \> 0 AND s2.searchterm = s1.searchterm LIMIT 1) \> 0 GROUP BY s1.searchterm ORDER BY s1.datum DESC Die liefert alle Suchanfragen zurück, die keine Ergebnisse zurückgegeben haben, obwohl es vorher identische Suchanfragen mit Ergebnissen gab - sortiert nach Datum.

Hallo Stefan, danke auch dir für die Rückmeldung. Ich habe den Query ausgeführt, allerdings ohne Ergebnis. Da wir den Cache nach dem Fehler gestern geleert hatten, werde ich den Query mal testen, wenn das Verhalten erneut auftritt. Allerdings kann ich nicht genau sagen, ob das funktionieren wird, da ich bisher nicht verstanden habe, in welchen Situationen keine Suchergebnisse mehr angezeigt werden.

Ich habe jetzt wieder die Situation, dass alle Suchanfragen leer zurückkommen. Der SQL-Query gibt ein leeres Resultat zurück. Was mir auffällt: [list] [*] Die Tabelle s_statistics_search enthält verschiedene Suchbegriffe mehrfach. Teils auch mit unterschiedlicher Anzahl an “results”. [/*] [*] Die Tabelle enthält auch Einträge, die Monate alt sind. [/*] [*] Meine letzten Suchbegriffe (alle ohne Ergebnis) tauchen in der Tabelle bisher nicht auf.[/*][/list] Ich werde den Cache mal für den Augenblick nicht löschen, falls ich noch was testen soll. ps: wir haben gestern auf 4.0.8 aktualisiert.

Und wieder. Also langsam wundert mich das schon. Überprüft sonst niemand die Suche oder sind wir echt die einzigen, bei denen das passiert?! Beim Prüfen letztens viel mir übrigens noch etwas ein. Wir hatten bei der Suche eine kleine Anpassung im Template vorgenommen. Und zwar ging es um den Bug, dass auf verschlüsselten Seiten die Suche nicht funktioniert bzw. mit einer Sicherheitswarnung quittiert wird (im IE8). Dabei lassen wir standardmäßig alle Suchanfragen über folgenden Code verschlüsseln: 'ajax\_search': '{url controller="ajax\_search" forceSecure=1}' Siehe http://jira.shopware.de/Widgets/Jira/?ticket=SW-5594 Ob es daran liegt? Im Zweifel müssen wir das mal testen. Besser ein etwas kleinerer Bug, als ein großer.

Hey, um das Problem einzugrenzen kannst du folgende 2 neue Methoden in die Datei engine/Shopware/Controllers/Frontend/Search.php einfügen: public function cacheTestRebuildAction(){ $this-\>View()-\>setTemplate(); $c = microtime(); $adapter = new Shopware\_Components\_Search\_Adapter\_Default(Shopware()-\>Db(), Shopware()-\>Cache(), new Shopware\_Components\_Search\_Result\_Default(), Shopware()-\>Config()); $adapter-\>buildSearchIndex(); $c = $c - microtime(); echo "Search index rebuild in ".$c. "seconds"; } public function cacheTestDeleteAction(){ $this-\>View()-\>setTemplate(); $c = microtime(); Shopware()-\>Cache()-\>clean(Zend\_Cache::CLEANING\_MODE\_MATCHING\_ANY\_TAG, array( 'Shopware\_Modules\_Search', )); $c = $c - microtime(); echo "Cache deleted in ".$c. "seconds"; } Wenn das Problem dann das nächste Mal auftritt, bitte wie folgt vorgehen: http://[DEIN SHOP]/search/cacheTestDelete aufrufen und überprüfen ob die Suche danach wieder funktioniert. Falls nicht: http://[DEIN SHOP]/search/cacheTestRebuild aufrufen und danach erneut testen. Die erste löscht den Suchbegriff-Cache - die zweite erzeugt den Index neu. Die geben auch jeweils die benötigte Zeit aus - diese biete notieren. Kannst du dann zusätzlich beizeiten einmal kontrollieren, wie viele Einträge du in den Tabellen s_search_index und s_search_keywords hast? Damit sollte sich das Problem eingrenzen lassen - ansonsten müssen wir mal auf dein System gucken, wir sollten aber erst einmal wie oben vorgeschlagen vorgehen.

Hi, danke für die Hilfe. s_search_index - 4367 Einträge (Näherungswert) s_search_keywords - 1713 Einträge (Näherungswert) Die beiden Funktionen habe ich aufgenommen und auch kurz getestetet. Beide Funktionen brauchen im Normalzustand übrigens zwischen 0,05sec und 0,5sec. Ich habe es mehrfach durchlaufen lassen und das waren die beiden Extreme. Ich werde also warten, bis der Fehler wieder auftaucht und wie von dir beschrieben vorgehen.

Der Fehler ist grad wieder aufgetreten. Dieses Mal wieder selektiv. Einzelne Suchbegriffe gehen also noch, andere nicht. s_search_index - 631 Einträge (Näherungswert) s_search_keywords - 270 Einträge (Näherungswert) cacheTestDelete ausgeführt: Cache deleted in -0.10403seconds Suche funktioniert nicht. cacheTestRebuild ausgeführt: Search index rebuild in 0.168232seconds Suche funktioniert nicht.

Helfen die Ergebnisse nicht weiter?

Es wäre natürlich schon schön, wenn es eine Rückmeldung gäbe, nachdem man alle Vorschläge und Tipps eingepflegt hat :slight_smile: Im Bugtracker wurde mein Eintrag sofort gelöscht, weil der Fehler nicht reproduziert werden konnte. Gerade eben habe ich wieder gesehen, dass eine Kundensuche ins Leere ging und tatsächlich werden wieder keine Ergebnisse angezeigt. Erneut brachte erst ein Löschen des Caches Abhilfe. Kann es vielleicht doch mit den gleichen Artikelnamen zusammenhängen? Wie gesagt haben wir ein paar Artikel, die gleich heißen…

Hi, wie ich an deinen Werten oben sehen kann, ist der Cache dann einfach nicht aufgebaut/vollständig. Hast du denn die Lösung mal probiert den Cache einfach per Cronjob aufbauen zu lassen? In Shopware 4.1 kannst du den Live-Generiermodus auch auf manuell umstellen. Dann leert Shopware den Cache gar nicht mehr automatisch Ein paar Infos zum neuen Performance Modul findest du hier http://wiki.shopware.de/Cache_detail_845.html Sebastian

Hallo Sebastian, danke für die Rückmeldung. Nein, den Cronjob habe ich bisher nicht getestet. Ich denke, ich werde aber nach dem Update auf 4.1 erstmal den zweiten Vorschlag umsetzen und den Cache manuell aufbauen lassen. Schöne Grüße Ade