Jump to content
xt:Commerce Community Forum

Suchfunktion funktioniert nicht


melahn

Recommended Posts

weder auf meinem lokalen Testshop noch auf dem gehostetem System.

Mein Shop beinhaltet ca. 9500 Artikel und 45.000 Kategorien.

Ich habe mal die Mysql-Queries geloggt und xtc4 schreibt da ZEHNTAUSENDE Queries der Form:

SELECT c.categories_id FROM xt_categories c LEFT JOIN xt_categories_description cd ON c.categories_id = cd.categories_id LE

FT JOIN xt_seo_url su ON (c.categories_id = su.link_id and su.link_type='2') left JOIN xt_categories_permission group_permission ON (group_permission.pid =

c.permission_id and group_permission.pgroup = 'group_permission_1' ) left JOIN xt_categories_permission shop ON (shop.pid = c.permission_id and shop.pgroup

= 'shop_1' ) WHERE c.categories_status = '1' and c.parent_id = '1015123' and cd.language_code = 'de' and su.language_code = 'de' and group_permission.

permission IS NULL and shop.permission IS NULL ORDER BY sort_order, cd.categories_name

und das klappert der mit jeder id durch. Sehr ineffektiv.

Kennt jemand das Problem und hat eine Lösung zur Hand? Ich werde mal schauen, ob ich mit zusätzlichen Indizes was verbessern kann.

Link to comment
Share on other sites

Ich habe eben noch mal weiter geforscht. Ein zusätzlicher Index bringt wohl nichts, weil die Suchschleife in der php Programmlogik steckt. Würde man das in eine größere SQL Query stecken, könnte man damit vielleicht was machen.

Ich habe mal alle Queries schreiben lassen (läuft auf meiner Test virtuellen Maschine schon 15 Minuten und hat 67MB an Query-Logs geschrieben).

Ob ich hier mal einen Bug melden sollte/kann?

Link to comment
Share on other sites

Hallo,

die Standard-Suche war auch schon in den älteren Veyton-Versionen mangelhaft.

Ich vermute die Deklarierung als Bug wird ineffektiv sein. XTC stellt das Shop-Framework zur Verfügung. Die individuelle Optimierung der Shop-Funktionen obliegt offensichtlich den Shopbetreibern bzw. Shop-Partner.

Zur Verbesserung der Suchleistung gibt es verschiedene Lösungsansätze:

mit Hilfe kostenpflichtiger Plugin-Lösungen,

mit Hilfe einer Query-Programierung im Class-Framework von Veyton

Link to comment
Share on other sites

hi,

wo findet diese Abfrage genau statt ? In der Suche wohl nicht, eher beim Aufbau der Kategorienbox.

Man könnte das aufteilen und den Zugriff auf die SEO-Url erstmal rauslassen, es kommt ja als Ergebnis nur eine Liste mit ID´s raus sortiert nach Reihenfolge und Kategoriename ....

Grüsse

Link to comment
Share on other sites

Manchmal ist es schon irre spannend, welche Big-Guns hier so unterwegs sind...

45.000 Kategorien...

Donnerwetter...

Naja, so groß ist der Shop nicht, aber die Artikel sind halt über verschiedene Menüfolgen zu finden. Der Shop selbst wird aus der Datenbank einer Warenwirtschaft gespeist.

Die Kategorien werden automatisch generiert und da entsteht schon ein ganz schöner Suchbaum.

Momentan in xtc3 kann man das ja schon sehen: Melahn Offroad-Shop

Da kann z.B. ein Artikel wie "Bremsbelag xyz" für Dutzende Motorräder passen (varianten von Hersteller, Baujahr, cm³ etc.). Das kann im Endeffekt zu mehr als Dutzenden Kategorien führen, die auf einen Artikel zeigen.

Link to comment
Share on other sites

hi,

wo findet diese Abfrage genau statt ? In der Suche wohl nicht, eher beim Aufbau der Kategorienbox.

Man könnte das aufteilen und den Zugriff auf die SEO-Url erstmal rauslassen, es kommt ja als Ergebnis nur eine Liste mit ID´s raus sortiert nach Reihenfolge und Kategoriename ....

Grüsse

Ich habe jetzt nicht genau analyisert, was und wo die Suche hängen bleibt.

Es handelt sich momentan um eine Demo-Installation auf meinem Testsystem (VMware auf meinem Entwicklungs-PC). Standard-Veyton ohne Anpassung halt. Bevor wir wirklich ein Template anfangen und sonst alles anpassen, muss erst mal sicher sein, das die Grundfunktionen alles okay sind und wir den Export Wawi-DB nach xtc4 fehlerfrei am Laufen haben. Das da nicht mal die einfache Suche funktionert macht schon das Testen zur Qual.

Und die kommerziellen Suchmodule: Naja, ein Kauf ist ja nicht das Problem. Aber für die Programmentwicklung auf meiner VM dann noch eine Lizenz, und der Echtshop wird auch erst mal auf einer Testdomain betrieben, also noch eine Lizenz kaufen. Nee, das kommt überhaupt nicht Frage. Eine Lizenz ja, kein Problem; aber nicht noch zwei zusätzliche.

Link to comment
Share on other sites

Noch mal in die Runde gefragt:

Hat irgend jemand eine einfache Suchfunktion zur Hand (plug-in?) mit dem man im fertigen Shop wenigstens nach einer Artikel-Nr (=product_model) suchen kann?

So könnte ich wenigstens die Shop seite für einzelne, spezielle Artikel mal finden und anschauen. Das reicht locker für meine Entwicklungsumgebung und den Testshop. Für den Echtshop können wir dann auch was komfortableres kaufen.

Link to comment
Share on other sites

aus der class.search.php funktion _search den Kategorie Block entfernen.

if(!empty($data['cat']) && $data['subkat']=='on'){

$rc = $category->getChildCategoriesIDs($data['cat']);

$this->sql_products->setSQL_TABLE("INNER JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c ON p2c.products_id = p.products_id LEFT JOIN ".TABLE_CATEGORIES." c ON p2c.categories_id = c.categories_id");

if(count($rc) > 0){

$this->sql_products->setSQL_WHERE("and p2c.categories_id in (".$data['cat'].", ".implode(',',$rc).")");

}

else{

$this->sql_products->setSQL_WHERE("and p2c.categories_id in (".$data['cat'].")");

}

}elseif(!empty($data['cat'])){

$this->sql_products->setFilter('Categorie', $data['cat']);

}

45.000 Kategorien ist doch etwas abnormal.

Hier sollte man evtl auch wegen der navigation evtl Fact Finder oder co einsetzen.

Link to comment
Share on other sites

Ich habe obigen Block mal in der class.search.php ausgeklammert, aber es ändert sich nichts. Es werden immer noch die gleichen SQLs abgefeuert.

Ich habe testweise mal ein die(); direkt hinter die deklaration function _seach() gesetzt; da kommt das System gar nicht hin. Es bleibt also schon vorher stecken.

Der Fehler liegt also irgendwo davor.

Ja, später könnten wir mal die Kategoriensuche irgendwie ablösen oder optimieren. Vielleicht mit einem optimierten Suchformular. Momentan haben wir jedoch nichts anderes und in den vergangenen Jahren hat es so wie es ist gut funktioniert.

Link to comment
Share on other sites

Suche nach Artikelnummer geht doch einwandfrei ....

Grüsse

Nein, tut sie nicht. Bei unserer Artikel/Kategorien-Anzahl bleibt das System stecken.

Ich habe gerade mal alle categories, categories_descriptions und products_to_categories mittels truncate table gelöscht.

Danach ist die Suchfunktion elementar nutzbar. Z.b. Suche nach der Artikel-Nr. dauert zwar auch mehrere Sekunden (ca. 4s) wird aber korrekt angezeigt.

Somit liegt das Problem in der Kategorienverarbeitung.

Falls es hilft und jemand das Problem mal debuggen will, stelle ich gerne per Mail einen Dump der drei Tabellen zur verfügung.

Ob das reicht den Fehler nachzustellen? Oder braucht man dafür unbedingt noch die products Tabelle?

Ich habe eben noch mal einen WaWi -> xtc4 Export durchgeführt und dann alle products gelöscht. Nur die Kategorien bleiben dann stehen. Da bleibt die Suche auch hängen. Also hat es nichts mit den Artikel zu tun, sondern rein mit den Kategorien.

Link to comment
Share on other sites

Hi,

@mzanier

aus der class.search.php funktion _search den Kategorie Block entfernen.

Diese Option ist verständlich.

Denn was die Suche wohl extrem verlangsamen wird sind die vielen Suchwiederholungen aufgrund der hohen Kategorienzahl

Link to comment
Share on other sites

  • 2 weeks later...

Damit könnte ich schon leben, wenn wenigstens die einfache Suche funktionieren würde.

Damit kann der Test- und Entwicklungsshop schon betrieben werden. Auch in den Echtbetrieb könnte man damit starten und dann später eine bessere Suche nachrüsten (gerne auch zukaufen).

Aber die elementare Suchfunktion muss einfach funktionieren, sonst können wir den Shop definitiv nicht auf Echtbetrieb schalten. Die Suchfunktion von xtc3 ist auch nicht so dolle, aber funktioniert und damit kann man leben/starten.

Link to comment
Share on other sites

mhh schon mal überlegt die Suche nicht von Veyton machen zu lassen?

Eigenes script schreiben was das Suchfeld ersetzt, dürfte dann auch schneller gehen.

Und ist es der Shop oder eher der Server der bremst?

Dein Script lief nicht durch, was sagt Serverlog dazu?

Abgebrochen wegen zu hoher Last bzw. Zeitüberschreitung bzw. zu vielen Daten für das bissel RAM?

Rootserver mit Bums dahinter oder doch Webspace?

Das würde auch noch interessieren.

Link to comment
Share on other sites

Nein, an einer eigenen Suchfunktion rumbasteln will ich wirklich nicht. Ich habe schon genug mit Export- und Syncronisationsscripten der Warenwirtschaft zu tun. Dann noch die Scripte für die Datenübernahme, die Templateerstellung, Content-Übernahme, Probleme mit TinyMCE (Bilder werden häufig nicht gespeichert), kein Dateimanager (KCFinder habe ich jetzt integriert), Umlaute Probleme, Master-Slave Artikelerzeugung, automatische Bilderzuordnung, mod_rewrite/SEO, Einrichtung und Konfiguration von Versandarten, Zahlungsarten etc. Da noch die Probleme der Suchfunktion oben drauf ist nicht sehr aufbauend.

Es ist der Shop der die Suche bremst. Gleicher Shop unter xtc3 auf zwei verschiedenen Systemen (VM auf meinem Rechner und auf einem Testsystem beim Hoster) -> kein Problem mit der Suche; unter Veyton: Server erstickt in SQL Abfragen. Ist im Log ganz klar zu sehen, das da für die Kategorien tausende von SQLs ausgelöst werden.

Falls jemand eine einfache Suchfunktion zu Hand hat und die zur Verfügung stellt, würde ich mich sehr freuen.

Mein Testsystem ist ein AMD 64 x4 mit 3Ghz und 4GB RAM; das System beim Hoster ist ein Dual-Core mit 8GB RAM; also an der CPU-Power liegt das nicht.

Link to comment
Share on other sites

Nein, an einer eigenen Suchfunktion rumbasteln will ich wirklich nicht. Ich habe schon genug mit Export- und Syncronisationsscripten der Warenwirtschaft zu tun. Dann noch die Scripte für die Datenübernahme, die Templateerstellung, Content-Übernahme, Probleme mit TinyMCE (Bilder werden häufig nicht gespeichert), kein Dateimanager (KCFinder habe ich jetzt integriert), Umlaute Probleme, Master-Slave Artikelerzeugung, automatische Bilderzuordnung, mod_rewrite/SEO, Einrichtung und Konfiguration von Versandarten, Zahlungsarten etc. Da noch die Probleme der Suchfunktion oben drauf ist nicht sehr aufbauend.

Es ist der Shop der die Suche bremst. Gleicher Shop unter xtc3 auf zwei verschiedenen Systemen (VM auf meinem Rechner und auf einem Testsystem beim Hoster) -> kein Problem mit der Suche; unter Veyton: Server erstickt in SQL Abfragen. Ist im Log ganz klar zu sehen, das da für die Kategorien tausende von SQLs ausgelöst werden.

Falls jemand eine einfache Suchfunktion zu Hand hat und die zur Verfügung stellt, würde ich mich sehr freuen.

Mein Testsystem ist ein AMD 64 x4 mit 3Ghz und 4GB RAM; das System beim Hoster ist ein Dual-Core mit 8GB RAM; also an der CPU-Power liegt das nicht.

Fast alle Deine Probleme traten und treten bei uns auch auf... schön das man da nicht alleine ist. Unschön das das so ist. Kostet imens Nerven mit Veyton produktiv arbeiten zu können.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...