Probleme d'index fulltext assez bizarre

Clovis37
Invité n'ayant pas de compte PHPfrance

08 juil. 2005, 13:42

bonjour,

jai un souci avec les index fulltext de mysql.

j'utilise le système des fulltext et dans ma table, j'ai donc ceci :
clé fulltext avec le champ title et description.

j'ai rajouté des données dans cette table, avec des mots clés tels que : "annuaire", "maison", "voiture", etc.

maintenant ma requête :

select count(id) from matable where match (title, description) against ('annuaire') --> renvoie 0. pourtant j'ai plusieurs enregistrements avec le mot clé annuaire.

si je fais la même requete avec "maison" ca marche. Et il me renvoie des résultats

et là je ne vois vraiment pas d'où ça peut venir, pour cette table, ça ne coince qu'avec le mot clé "annuaire" !

et encore plus fort, dans une autre table, j'ai un index fulltext exactement pareil et là, quelque soit le mot clé entré (et qui est bien présent dans les enregistrements de la table), mysql ne trouve absolument aucun résultat. Je tape aussi bien des mots de 10 caractères, que de 5 ou 4, donc la taille est à exclure.

Quelqu'un a une idée ?? car là j'y ai passé deux heures hier soir et ça me pete le... j'aimerais éviter de devoir revenir sur les LIKE...

merci à vous.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

08 juil. 2005, 13:47

Modération : et zouuu ! Direction le forum "Base de données"

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 juil. 2005, 13:56

je pense que ce n'est pas bizarre et que cela vient de ça :
Un mot qui est trouvé dans la moitié des enregistrements d'une table n'est pas efficace pour trouver les document appropriés. En fait, il trouvera sûrement beaucoup de documents inappropriés à la recherche. On sait tous que cela arrive souvent lorsqu'on recherche quelque chose sur internet en utilisant un moteur de recherche. C'est en suivant ce raisonnement que ces lignes se sont vues attribuer une valeur sémantique très basse dans ce cas particulier.

Le seuil de 50% a un impact significatif lorsque vous commencez à comprendre comment fonctionne l'index : si vous créez une table et insérez une ou deux lignes, chaque mot apparaîtra dans 50% des lignes. Résultat, la recherche ne trouvera rien. Assurez-vous d'insérer au moins trois lignes, et même plus.
=> http://dev.mysql.com/doc/mysql/fr/fulltext-search.html

;)

Eléphanteau du PHP | 29 Messages

14 févr. 2006, 12:25

Donc ca voudrait dire que pour des tables contenant peu d'enregistrements, ce n'est pas viable ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

14 févr. 2006, 17:20

Donc ca voudrait dire que pour des tables contenant peu d'enregistrements, ce n'est pas viable ?
pas forcément, cela veut dire qu'une expression contenue dans un trop grand pourcentage de lignes n'est pas considérée comme clé, ce qui est normal.

Par exemple, si tu fais un site d'articles sur le foot, et que tu mets en mot-clé "foot" dans chaque article, une recherche dessus n'est pas pertinente, donc il ne renvoie rien.
Par contre si tu fais une recherche sur "Zidane", ta recherche est plus ciblée donc là ça marche.