Hallo Gemeinde,
durch die Diskussion im Thread
Professionelle Produktsuche zur stärkeren Kundenbindung bin ich auf das IntelliSearch-Modul aufmerksam geworden.
Nach einem kurzen Abstecher in den Code, bin ich dabei auf einige Bereiche gestoßen, die mich zum Nachdenken bringen.
Eure Abfragentypen machen prinzipiell Tablescans erforderlich.
Das heißt, dass *jeder* Eintrag in der Datenbank daraufhin untersucht wird, ob er die Suchanfrage matcht. Ich weiß, dass hier auch Leute mitlesen, die nicht den technischen Background haben, darum will ich mal kurz erklären, warum das problematisch ist:
Normalerweise sollen Anfragen aber über Indices laufen.
Ein Index, den kann man sich vorstellen wie eine Reihe von Gabelungen.
Es wird an Gabelung 1 geprüft, ob man links oder rechts weitergehen soll.
Bei 1000 Datensätzen, würden sich die zu untersuchenden Datensätze von 1.000 auf 500 reduzieren. Ab der zweiten Gabelung, kommen nur noch 250 in Frage, ab der dritten 125 usw. - bis am Ende die gesuchte Ergebnismenge vorliegt.
Das Ganze geschieht blitzschnell in wenigen Schritten.
Bestimmte Anfragen können von diesen Indices leider keinen Gebrauch machen, was es erforderlich macht, *alle* Datensätze zu untersuchen.
Das mag kein Problem sein, wenn nur wenige User gleichzeitig auf der Seite unterwegs sind. Wenn es aber mal mehr werden, z.B. bedingt durch das Weihnachtsgeschäft, können solche Abfragen sich negativ durch lange Ladezeiten bemerkbar machen. Die Datenbank kommt dann einfach nicht mehr hinterher.
Sobald die AJAX-Suggest-Funktion aktiv ist, reichen verhältnismäßig wenig User aus, um so einen Datenbankserver ins Schwitzen zu bringen.
Ich rate daher davon ab, dieses Modul
zum Standard zu erklären.
Es ist wirklich eine tolle Arbeit, skaliert aber schlecht und eignet sich nicht für
jeden Anwender. Viele werden davon profitieren - hier gab es auch schon positives Feedback
. Aber vielen anderen könnte so eine Funktion ernsthafte Performance-Schwierigkeiten bereiten.
Für gut besuchte Shops könnte der Einsatz eines solchen Modules mitunter darüber entscheiden, ob man sich einen weiteren Server hinstellt, oder nicht.
Ich hoffe, dass das Feedback ein bisschen weiterhilft!
Beste Grüße,
Em