In diesem Fall hilft die neue InnoDB-Volltextsuche in MySQL 5.6. Ich verwende die folgende Abfrage:
SELECT MATCH(column) AGAINST('(word1* word2*) ("word1 word1")' IN BOOLEAN MODE) score, id, column
FROM table
having score>0
ORDER BY score
DESC limit 10;
wobei ( )
gruppiert Wörter zu einem Teilausdruck. Die erste Gruppe hat like word%
Bedeutung; die zweite sucht nach dem genauen Ausdruck. Die Punktzahl wird als Float zurückgegeben.