Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1139 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2247965
Dawa
www.shootmeagain.com
Posté le 09-01-2015 à 21:39:44  profilanswer
 

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
mood
Publicité
Posté le 09-01-2015 à 21:39:44  profilanswer
 

n°2247967
Dawa
www.shootmeagain.com
Posté le 09-01-2015 à 21:42:56  profilanswer
 

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

n°2247986
Dawa
www.shootmeagain.com
Posté le 10-01-2015 à 09:35:21  profilanswer
 

up [:dawa]

n°2248014
Dawa
www.shootmeagain.com
Posté le 10-01-2015 à 22:11:37  profilanswer
 

up [:moule_bite]

n°2248016
Dawa
www.shootmeagain.com
Posté le 10-01-2015 à 22:54:37  profilanswer
 

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 :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Envoi données vers base mysql[Mysql] DB Mediawiki ne contient plus que hitcounter et searchindex
Aide php mySql[Mysql] redéfinition des id auto incrémentés après suppression
Problème lien Access-MySQLAjout datas BDD MYsql
[RESOLU] FORMULAIRE + LISTE MYSQLIndex MySQL pas utilisé pour chaque requête [Résolu]
Problème pour insérer des données sur MySQLLenteur MySQL
Plus de sujets relatifs à : [Mysql] Pertinence des résultats avec MATCH / AGAINST


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR