Новата функция за пълнотекстово търсене на InnoDB в MySQL 5.6 помага в този случай. Използвам следната заявка:
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;
където ( )
групира думите в подизраз. Първата група има like word%
смисъл; вторият търси точна фраза. Резултатът се връща като float.