Mysql Suche
-
Wie sucht man heutzutage in Mysql Datenbanken?
Volltextsuche oder mit "Like"?? oder gibt es andere "neuere" sachen?
das problem ist dass die volltextsuche myisam datenbanken brauchen, was aber im fehlerfall inkonsistente daten in der Datenbank hinterlässt.
einer einen tipp?
-
Die MySQL Volltextsuche ist eh Schrott...
-
Kommt darauf an wie groß die Daten sind die du durchsuchst.
Prinzipiell musst du aber einen Index erstellen. die MySQL Volltextsuche macht das für dich automatisch - ist aber halt sehr limitiert, dafür trivial umzusetzen und für kleinere Datenmengen funktioniert es auch gut genug.
Das große Problem an diesen Indeces ist die Performance - das ist der tricky part. uU ist MapReduce hier ein passendes Keyword um danach zu googlen.
Die Frage ist wie komplex du suchen willst - wenn du zB google-like suchen willst, so dass die Position der einzelnen Suchwörter zueinander relevant ist, wird es natürlich viel teurer (performance mäßig).
Ein simpler erster Schritt ist aber alle Wörter in eine Tabelle zu packen und in einer 2. Tabelle die Position dieser Wörter in den zu durchsuchenden Artikeln zu speichern.
Was genau ist denn die Anforderung und von welchen Datenmengen reden wir?
-
Shade Of Mine schrieb:
wenn du zB google-like suchen willst, so dass die Position der einzelnen Suchwörter zueinander relevant ist, wird es natürlich viel teurer (performance mäßig).
Warum weiß jeder wie Google funktioniert, nur ich nicht
-
also wir sprechen hier von daten < 1 gb
und es reicht völlig wenn man zb. "stuhl" eintippt und beispielsweise "stuhlgang" findetdie volltextsuche hat hier etwas kleinere makken weil man immer das komplette wort suchen muss... ich hab aber ane kombi gedacht??
volltext OR like %xxx%
is das eine gute idee?
-
Das müsste die MySQL Volltextsuche aber schon automatisch machen.
Wie sieht dein Query aus?
-
ich123123 schrieb:
und es reicht völlig wenn man zb. "stuhl" eintippt und beispielsweise "stuhlgang" findet
mir ist keine opensource suchfunzel bekannt, die das macht. ist auch nicht ganz einfach
-
??? ähm LIKE macht das!
mir ist jetzt halt nicht klar was besser ist? volltext, like oder kombi?
-
Shade Of Mine schrieb:
Das müsste die MySQL Volltextsuche aber schon automatisch machen.
Wie sieht dein Query aus?
Sql = mysql\_query("SELECT * FROM xxx WHERE MATCH(title, description) AGAINST('%SearchTerm%')") or die(mysql_error());
-
* statt % verwenden.
Ansonsten kannst du dir noch stemming plugins für MySQL ansehen - die die Wörter auf den Wortstamm reduzieren. Habe ich aber noch nie verwendet.
Weiters gibt es auch fertige Suchmaschinen Lösungen, zB Sphinx oder Lucene.