Le 12/06/2017 à 09:42, Cédric Morin a écrit :
Pour info j'avais fait un filtre pour un peu le même problème
Connexion · GitLab
il s'utilise avec un
{recherche #ENV{recherche}|fulltext_recherche_naturelle_fr}
Parce que le coup de l'asterisque ça suffit pas, rapidement tu te rends compte que tu as le problème inverse : quand tu mets le mot au pluriel il te ramène pas le singulier etc…
Bon, j'avais laissé ça de côté mais je viens de tester sur un site avec du contenu, et j'obtiens en fait moins de résultat avec une étoile que sans, ce qui est contre intuitif.
lycée -> 77 articles
lycées -> 77 articles
lycée* -> 51 articles
lycé* -> 51 articles
lyc* -> 51 articles
action -> 60 articles
actions -> 36 articles
action* -> 26 articles
actio* -> 26 articles
En cherchant les raisons, je tombe sur cette réponse sur Stackexchange, très intéressante :
Je teste donc sans Fulltext (avec donc une recherche en LIKE), et je trouve beaucoup plus de résultats :
lycée -> 208 articles
lycées -> 77 articles
action -> 226 articles
actions -> 139 articles
(à faire : tester avec LOCATE)
La doc de Fulltext indique :
Pertinence
Les résultats sont beaucoup plus pertinents, puisque si on tape deux mots (ou plus), le moteur FULLTEXT va trouver comme avant l’ensemble des articles contenant ces deux mots, mais attribuera un score plus important à ceux qui disposent de ces deux mots consécutifs. Ce score est comptabilisé par la balise #POINTS.
Je ne cherche pas des mots consécutifs, et il ne me semble pas que ce soit une façon de chercher naturelle : on tape plutôt un ou deux mots sur des thématiques.
Je teste donc avec deux mots :
action lycée, avec Fulltext -> 73 articles
action lycée, sans Fulltext -> 372 articles
On a donc là aussi plus de résultats sans Fulltext.
Par contre, le temps de calcul est beaucoup plus long.
Avec 1 mot : 1.5 secondes sans Fulltext au lieu de 0.7 secondes avec
Avec 2 mots : 3 secondes contre 0.9
(chaque test fait en var_mode=recalcul)
Ps : les index fulltext sont bien en place sur la table spip_articles
FULLTEXT KEY `titre` (`titre`),
FULLTEXT KEY `tout` (`surtitre`,`titre`,`soustitre`,`chapo`,`texte`,`ps`,`nom_site`,`url_site`,`descriptif`)
--
nicod_