[Mysql] Pertinence des résultats avec MATCH / AGAINST

Pertinence des résultats avec MATCH / AGAINST [Mysql] - PHP - Programmation

Marsh Posté le 09-01-2015 à 21:39:44    

Bonjour,
 
Je suis en train de bosser sur un moteur de recherche performant pour mon site.  
 
Pour faire simple, ce sont des chroniques de disques. J'aimerais que le moteur permette de taper à la volée le nom d'un groupe et / ou d'un album et que les résultats soient classés par pertinence. Hélas après moultes recherches je ne suis pas satisfait du résutat...
 
Dans ma table "reviews", j'ai créé un champs "searchindex" dans lequel figurent les mots-clefs dans lesquels rechercher. C'est-à-dire le nom du groupe, de l'album et du label. J'ai créé sur ce champs un index FULLTEXT, comme conseillé un peu partout.  
 
La requête qui va chercher tout ça, la voici :  
 

Code :
  1. select distinct idreview, idband, band, releas, reviewart, bandname, review_slug, idlabel,nomlabel, splitlabel, url, titre, reviewer, cover, date, iduser, login, split, texte, searchindex, SUM(MATCH (searchindex) AGAINST ('$recherche')) as score from band_reviews, reviews, users, groupe, label_reviews, labels where labels.idlabel=label_reviews.label and label_reviews.labelrelease=idreview and releas=idreview and reviewer=iduser and band=idband and reviewonline=1 and MATCH (searchindex) AGAINST ('$recherche') group by idreview order by score DESC limit 20


 
Bon y a beaucoup mais faut évidemment faire attention aux MATCH / AGAINST. De ce côté là c'est correct non ?  
 
Parce que les résultats le sont moins. Par exemple, si je fais une recherche sur Poison The Well, le résultat qui arrive en tête (j'indique le contenu du champs searchindex) :  
 
bullet for my valentine the poison trustkill
SCORE 11.11
 
poison heart one poison drives out another we are
SCORE 8.44
 
poison the well i/iii ii/iii iii/iii ferret music
SCORE 5.80
 
poison the well versions ferret music
SCORE 5.73  
 
Je ne comprends pas comment le premier a un tel score, alors que le premier résultat vraiment pertinent n'arrive qu'en troisième avec un score de moitié moindre...  
 
C'était vraiment une bonne idée l'index en FULL TEXT vu que cela exclut certains mots trop courants dans les termes de recherche ? Dans ce cas-ci je suppose que le THE en fait partie...
 
Merci de m'éclairer à ce sujet ! [:dawa]


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 09-01-2015 à 21:39:44   

Reply

Marsh Posté le 09-01-2015 à 21:42:56    

Pour ceux qui veulent tester : http://eriksma.noip.me/newsma/chroniques
 
(adaptez la largeur de votre page, c'est une interface pour smartphones...) :p

Reply

Marsh Posté le 10-01-2015 à 09:35:21    

up [:dawa]

Reply

Marsh Posté le 10-01-2015 à 22:11:37    

up [:moule_bite]

Reply

Marsh Posté le 10-01-2015 à 22:54:37    

Trouvé ! C'était le "SUM" dans ma requête qui faussait tout.
 
Petite astuce aussi, pour favoriser les mots-clefs trouvés dans les noms de groupes plutôt que les noms d'albums et les labels, j'ai répété trois fois les noms de groupes dans l'index et deux fois le nom d'album. Par exemple :  
 
RISE AND FALL
Our Circle Is Vicious
Deathwish Inc.  
 
Est repris dans ma table searchindex comme : rise and fall rise and fall rise and fall our circle is vicious our circle is vicious deathwish inc.
 
Dans mon cas, ça a beaucoup amélioré la pertinence des résultats :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed