Vu qu'on vient de se prendre la tête quelques heures pour comprendre pourquoi avec le plugin FULLTEXT une recherche de « "terme" » peut renvoyer beaucoup plus de résultats qu'une recherche sur « terme », je partage l'explication au cas où d'autres se poseraient les mêmes question :
Selon la documentation de l'indexation fulltext de MySQL[1], le mode de recherche varie selon qu'il s'agit d'une recherche simple (uniquement des mots clefs), ou d'une recherche booléenne[2] (avec des opérateurs tels que « " », « + », « - », etc.).
Dans le premier cas (recherche simple), MySQL retire automatiquement de l'index les mots qui sont présents dans plus de 50% des contenus, considérant qu'ils ne peuvent pas retourner de résultats pertinents. C'est pour cela qu'une recherche sur un terme courant a peu de résultats, uniquement en fait ceux qui n'utilisent pas l'index fulltext, c'est à dire ceux qui ont le terme dans le titre par exemple.
Dans le second cas (recherche booléenne), MySQL conserve tout l'index.
Du coup, il est logique qu'une recherche encadrée par des guillemets (booléenne donc) renvoie plus de résultats que la recherche sur exactement le même terme mais sans guillemets (simple).
Il est possible de retirer le filtre sur les 50% dans le cas de recherches simples, mais cela nécessite de modifier le code et recompiler MySQL[3], ce que je ne recommande certainement pas si on ne maîtrise pas complètement sa plateforme.
Il est sinon possible de forcer (en modifiant le code de SPIP) toutes les requêtes en mode booléen, mais par contre, dans ce mode, le tri par pertinence est perdu, tous les résultats sont mélangés. D'autre part, les recherches retourneraient bien plus de résultats et auraient un impact fort de performances.
Sachant qu'une majeure partie des recherches sont faites à priori en mode simple par les Internautes, je pense plus pertinent de conserver tant le tri par pertinence que les bonnes performances.
[1] http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
[2] http://dev.mysql.com/doc/refman/5.0/fr/fulltext-boolean.html
[3] http://dev.mysql.com/doc/refman/5.0/fr/fulltext-fine-tuning.html
-Nicolas
--
Nicolas HOIZEY
http://www.gasteroprod.com/
http://flic.kr/nicolas-hoizey/