Ce n'est rien. Par contre j'encaisse mal ce genre de remarques (avec un ton "pffff", je l'ai ressenti comme ca), que ce soit à tort ou à raison.
Je ne t'en veux pas mais ca a plutôt tendance à me décourager qu'à progresser. Enfin, dans mon cas au moins. Je ne pourrais en faire une généralité.
Là où je te remercie, c'est que j'ai réétudié la solution des index full text et l'ai mis en oeuvre.
J'ai donc une requête du style
Code :
- WHERE
- MATCH(nom, prenom, adresse, telephone) AGAINST('+mot1* +mot2*...+motn*' IN BOOLEAN MODE)
|
Ca ne récupère que les lignes contenant des mots commençant par mot1, mot2...etc. Cela implique forcément d'écrire au moins le début des mots. Pour le mot "dupon" par exemple, on aura donc les lignes contenant "dupond" ou "dupont" mais pas "chezdupond".
De plus, il faut que les mots dans les lignes soient séparés par des caractères séparateurs, tels que le tiret, le point, l'underscore...etc. Ces caractères peuvent être modifiés dans la config MySQL je crois. On aura tout de même donc les lignes "chez_dupond".
Après quelques tests, les résultats retournés, bien que pas aussi pertinents que le like '%...%' qui permet une correspondance stricte quelle soit la chaine autour du mot clé, sont tout de même assez satisfaisants. Le gain de performances est par contre incomparable. Là ou auparavant la requête prenait plusieurs secondes, là elle ne fait que quelque dixième de sec tout au plus. Le rapport pertinence / temps d'exécution penche alors largement pour cette dernière solution.
Donc pour le moment, à défaut de trouver encore mieux que cela, j'ai adopté les index full text
Merci en tout cas guybrush02.
Message édité par welcominh le 03-05-2009 à 21:28:18