-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Die Ähnlichkeitssuche erzeugt teilweise extrem lange SQL-Anfragen #319
Comments
Handelt es sich um einen Wald-und-Wiesen-Hoster oder um ein ordentliches Hosting-Paket bei einem ordentlichen Hoster? Ich habe probeweise eine Suche ausgeführt über 16 Begriffe mit insg. 130 Zeichen inkl. aktivierten Soundex über 175 Artikel. Die Suche wird im Zehntelsekundenbereich durchgeführt:
|
@DanielWeitenauer kannst du mal ein konkretes beispiel hier posten von so einem rießigen query? |
@alxndr-w Das ist ja nur eine Suche, oder? Es geht ja wohl um die Erstellung der soundex- Ähnlichkeitswerte? |
@tyrant88 wo, wenn nicht bei einer Suche, werden aus Suchbegriffen ein SQL-Befehl formuliert? Die Indexierung lief bei mir ebenfalls problemlos durch. |
Also natürlich Suche, aber eben mit den Soundex Ähnlichkeitswerten- das habe ich in deinem Beispiel nicht gesehen. |
Die habe ich ausgeführt (zumindest aktiviert) |
@staabm Ich glaube der ist zu lang. Der Hoster hat ihn an die E-Mail angehängt und es sind ca. 5000 Zeilen mit ca. 480000 Zeichen. |
@DanielWeitenauer hänge es doch hier an, Link zu einer Datei via Dropbox, OneDrive, Google Drive. |
@staab @alxndr-w @tyrant88 Bei der Website handelt es sich um einen Custom Shop der inzwischen bei All-Inkl läuft, den ich allerdings nur übernommen habe. Artikel sind so gut wie keine drin, die Suche geht in der Hauptsache über eine DB-Tabelle mit ca 2000 Einträgen. Der Index hat ca. 10000 Einträge, Keywords ca. 12000. Der Query startet mit Der Link zu Query: https://drive.google.com/file/d/1WyPVHY9r7VLGTzHoS9abqoDN-eJZqVJj/view?usp=sharing Das Problem war wohl auch nicht die Ausführungszeit, sondern ein Überlaufen des Speichers. |
Also halbieren könnte man das Szenario schon damit, dass Soundex dem Query nicht hinzugefügt wird, wenn es sowieso 0000 ist. Dass die Eingabe sinnvoll beschränkt wird oder die maximale Anzahl von Suchbegriffen (es hängt ja eher mit der Menge als an der Begrifflänge), z.B. auf 20, sähe ich ebenfalls als kein Problem. |
Also das mit dem "halbieren" habe ich nicht kapiert, weil "0000" ist der soundex-Wert zu all den Zahlen. Da kann man nichts weglassen, weil man jede der Zeilen braucht. Aber mit dem anderen hast du Recht, das sind einfach tausende Suchwörter, die tausend SQL Zeilen in der Ähnlichkeitssuche erzeugen. Ich denke die maximale Anzahl der Suchwörter lässt sich schon sinnvoll begrenzen. Bleibt nur die Frage wie. Noch ein Config-Value? Package.yml? |
@tyrant88 also grob gesagt braucht man doch nicht überall Überdeutlich:
Nun können aber nicht nur Artikelnummern lange SQL-Queries auslösen. Ich würde dafür keinen Config-Wert anlegen, weil es eine sinnvolle Entscheidung ist und mir kein Szenario einfällt, in der man riskieren will, dass der DB-Server abschmiert. Aus meiner Sicht wären das max. 10 Begriffe. Andererseits könnte es auch ein Feature sein, dass die Eingabe sinnvoll begrenzt wird, aus Usability-Sicht. Dann sollte der Entwickler der Website entscheiden können, was für sinnvoll erachtet wird - mit einem guten Default-Wert. Das wäre aus meiner Sicht etwas zwischen 2 und 6, mit denen man noch sinnvolle Ergebnisse erwarten kann. |
Problem ist, das die ganzen Zeilen ein Ergebnis bilden, die Liste der ähnlichen Wörter zu den Suchwörtern und ihre Häufigkeit und im Code so "weiterverarbeitet" werden :-) Ich habe gerade nochmal ein bisschen rumgespielt und bei mir wirft schon die Testsuche einen Fehler bei 15 Suchwörtern... |
Könnte das mit diesem Bug in Zusammenhang stehen? Damals gab es Probleme wenn Zahlen im Suchstring vorhanden waren. |
Ich glaube nicht. @TobiasKrais – Hier geht es um tatsächliche Suchbegriffe, wenn zu viele eingegebenen/abgesendet wurden. In dem anderen Bug ergaben halt Ziffern ein leeres Soundex Suchmuster ("0000") |
Ich seh das nicht als Problem von search_it. Zwei Lösungsvorschläge:
|
Ja, es wird wohl auf eine Beschränkung der Suchbegriffe hinauslaufen. |
Unser Hoster wies darauf hin, dass eine mehrere tausend Zeilen lange SQL-Anfrage von search it den Datenbankserver lahmgelegt hat. Soweit ich das sehen kann, wurde die Anfrage durch die SOUNDEX-Ähnlichkeitssuche erzeugt.
Es scheint durch die Übergabe von Suchstrings mit mehr als 100-200 Zeichen provoziert worden zu sein.
Die Ähnlichkeitssuche übernimmt jedes Wort des Strings in die SQL-Abfrage.
The text was updated successfully, but these errors were encountered: