MySQL Fulltext Search

Xot

-
ID: 413078
L
26 November 2006
451
36
Hallo zusammen,

ich habe derzeit ein Problem bei der MySQL Fulltext Suche:

Mein Query
Code:
SELECT * FROM `site` AS site WHERE MATCH (site.url, site.title) AGAINST ('%s' WITH QUERY EXPANSION) LIMIT %d, %d;

Dazu sei noch gesagt ich benutzte die Funktion von Ice-Breaker gegen SQL-Injections.

Nun das Problem:
In der Datenbank gibt es einen Eintrag mit dem Titel "Jobs" und nun möchte ich das bei einer Suche mit "Job" auch dieser Eintrag gefunden wird.
Die Platzhalter * oder % im Query benutzen bringt nichts. Jemand eine andere Idee?

Gruss
 
Ich hab das bisher über PHP geregelt.

PHP:
$search_string = "%".$suche."%";

Hat bei mir geklappt.... Gibt aber bestimmt bessere Lösungen, war damals auch nur ein notwendiges Übel...
 
was du suchst nennt sich Stemming und macht jede gute Volltextsuche, nun überlege was es bedeutet, wenn MySQL es nicht macht :ugly:

sofern du keinen eigenen Server hast, hast du aber auch keine andere Wahl bessere Software zu nutzen ;)

Edit: ich habe nochmal nachgesehen, im Boolean-Mode gibt es wohl noch folgende Option:
Code:
SELECT * FROM `site` AS site WHERE MATCH (site.url, site.title) AGAINST ('%*' IN BOOLEAN MODE) LIMIT %d, %d;


PHP:
$search_string = "%".$suche."%";
und das sollte man sowieso unterlassen, weil es absolut ineffizient ist.
Es kann kein Index genutzt werden. Deshalb wieder jeder Datensatz von der Platte geladen, geprüft ob der search-String passt und dann der nächste Datensatz geladen.
 
Zuletzt bearbeitet:
und das sollte man sowieso unterlassen, weil es absolut ineffizient ist.
Es kann kein Index genutzt werden. Deshalb wieder jeder Datensatz von der Platte geladen, geprüft ob der search-String passt und dann der nächste Datensatz geladen.

Stimmt, hat mich aber für meine 20 Datensätze damals nicht gejuckt. Hatte der Server wenigstens mal etwas zu tun :p
 
Was würdest du denn dafür Empfehlen?

Lucene oder Sphinx, beides vollständig entwickelte Volltextsuchen.
Die MyIsam-Volltextsuche ist nur ein Dirty-Hack in der Engine ;) Die Umsetzung ist grausam.

Mit kleinen Datenmengen kannst du zur MyIsam-Volltextsuche greifen, aber für größere Mengen ist es absolut ungeeignet.
Was meint ihr warum in den meisten vBulletins nur alle 30 Sekunden gesucht werden darf ;) Ihr könntet sonst den Server killen :biggrin: