La nouvelle fonctionnalité de recherche en texte intégral d'InnoDB dans MySQL 5.6 aide dans ce cas. J'utilise la requête suivante :
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;
où ( )
regroupe des mots dans une sous-expression. Le premier groupe a like word%
sens; le second recherche la phrase exacte. Le score est renvoyé sous forme flottante.