Andreas-Lindig: SUCHWORT_anderesWort mit match() im mySQL suchen

Beitrag lesen

Hallo Forum,

Ich bin gerade dabei meine eigene Forums-Suche weitgehend Sonderzeichenresistent zu machen und jetzt dies: nimm an, Du suchst das Wort SUCHWORT. In einem Posting kommt es so vor: SUCHWORT_andereswort. Wenn ich das nun in mySQL so suche

select * from tabelle
where match(suchspalte) against ('SUCHWORT')

dann wird es nicht gefunden, weil _ und ' von match() auch als zulässige Zeichen in einem Wort betrachtet werden. SUCHWORT wird also als Teil eines Wortes nicht erkannt. Ebenso passiert es z.B. mit Onkel Tom's Hütte, wobei Tom mein SUCHWORT sein soll.

URGHHHMPF!

Nun könnte ich natürlich mit RLIKE suchen und das funktioniert auch, nur: Ich kann meinem PHP-Script nicht mitteilen, wann es denn mit RLIKE und wann mit match() suchen soll. Ich will natürlich sooft wie möglich mit match() suchen, um Resourcen zu sparen, aber ob mein SUCHWORT nun durch _ bzw. ' von einem zweiten Teilwort getrennt wird kann ich ja frühestens _nach_ der Suche rausfinden.

Wie kann ich also SUCHWORT_andereswort finden ohne standardmäßig mit RLIKE oder LIKE zu suchen?

Gruß, Andreas

--
<img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
http://was-ist-das.andreas-lindig.de