Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

info sur requete mysql MATCH () AGAINST()

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
de_prog
Nouveau WRInaute

Inscrit le: 24 Mai 2007
Messages: 28
Localisation: paris

URL permanente de ce messagePosté le : Ven Jan 18, 2008 9:27    Sujet du message: info sur requete mysql MATCH () AGAINST()

Bonjour,

j'ai un gros problème avec une requete !!
j'ai un moteur de recherche sur une base d'infos (+ de 22 000 enregistrement).

Les requetes du genre where titre LIKE '$kekchose' or texte LIKE '$kekchose' étant très lente, j'ai opté pour le FULLTEXT.
j'ai mis mes champs titre et texte en FULLTEXT et transformé mes requetes en :

where MATCH (titre,texte) AGAINST('$kekchose') => résultat pas pertinent du tout !!!, me sors des résultats ou il n'y as pas $kekchoses et des fois des résultats ou il y a $kekchoses de façon aléatoire.

De même, j'ai en parcourant internet transformé ma reuqte en
where MATCH (titre,texte) AGAINST('$kekchose' IN BOOLEAN MODE) => pas mieux,bref mon moteur de recherche est plus rapide mais carrément pas pertinant du tout.

Quelqun peut t'il m'éclairer sur le sujet... ?

Merci d'avance pour votre aide.
 
de_prog
finstreet
WRInaute accro
WRInaute accro

Inscrit le: 10 Juil 2005
Messages: 9891

URL permanente de ce messagePosté le : Ven Jan 18, 2008 10:13    Sujet du message: info sur requete mysql MATCH () AGAINST()

tu entends quoi par pertinent ?

(c'est pour faire avancer le pb)
 
finstreet Visiter le site web du posteur
totoro
WRInaute passionné
WRInaute passionné

Inscrit le: 28 Juil 2004
Messages: 883
Localisation: Devant le bouzin

URL permanente de ce messagePosté le : Ven Jan 18, 2008 11:22    Sujet du message: info sur requete mysql MATCH () AGAINST()

Salut,

Essaye avec qqch du genre :
Code:
SELECT ... FROM matable  WHERE MATCH (titre) AGAINST ('$kekchose')


Si tu peux éviter le mode booleen, evite le, ca va ralentir le moteur pour pas grand chose ...

Attention avec match against tu as des configurations à faire pour ne pas être piégé et avoir des retours pertinents (Fichier my.cnf):
- la longueur des expressions => ft_min_word_len
Cela permet de ne pas rechercher sur les mots de moins de 3 lettres par exemple
- certains mots sont rejetés, la liste se parametre avec la variable ft_stopword_file

La meilleur source d'info sur la question: http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
 
totoro Visiter le site web du posteur
webmasterlamogere
WRInaute accro
WRInaute accro

Inscrit le: 17 Déc 2006
Messages: 1689
Localisation: urlrewriting.fr

URL permanente de ce messagePosté le : Ven Jan 18, 2008 11:25    Sujet du message: info sur requete mysql MATCH () AGAINST()

match retourne un nombre qui est d'autant plus grand que le résultat "match" :
Code:
where MATCH (titre,texte) AGAINST('$kekchose') > 10

Le 10 est a adapter à la hausse pour être plus précis.
 
webmasterlamogere Visiter le site web du posteur
de_prog
Nouveau WRInaute

Inscrit le: 24 Mai 2007
Messages: 28
Localisation: paris

URL permanente de ce messagePosté le : Lun Jan 21, 2008 12:10    Sujet du message: info sur requete mysql MATCH () AGAINST()

Ok , merci pour vos réponses, je vais regarder tout ça et tester, je vous tiens au courant !!!
 
de_prog
de_prog
Nouveau WRInaute

Inscrit le: 24 Mai 2007
Messages: 28
Localisation: paris

URL permanente de ce messagePosté le : Mar Jan 22, 2008 11:54    Sujet du message: info sur requete mysql MATCH () AGAINST()

ça y'est, j'ai bien compris ce que tu m'as dit webmasterlamogere et du coup je peux mieux trier les résultats de mes requetes.

En revanche, les résultats ne sont toujours pas ce que j'attend ... :

MATCH est égale à 0 sur une requete ou je recherche un mot qui est bien dans le texte !!!!
ex : le mot "Millionnaire" , le titre de l'article : Millionnaire et seule, avec le loto...
la requete :

Code:

select  MATCH (titre) AGAINST (' Millionnaire '),texte,id,titre,date from articles WHERE  ( MATCH (titre) AGAINST (' Millionnaire ')) > 0 ORDER BY date DESC

sinon peut tu m'en dir plus totoro sur le fichier (Fichier my.cnf):

Bon, en tout cas merci pour votre aide, c'est déjà beaucoup mieux qu'au début Smile !

je continue...
 
de_prog
webmasterlamogere
WRInaute accro
WRInaute accro

Inscrit le: 17 Déc 2006
Messages: 1689
Localisation: urlrewriting.fr

URL permanente de ce messagePosté le : Mar Jan 22, 2008 14:10    Sujet du message: info sur requete mysql MATCH () AGAINST()

je te conseil de lire cette page : -http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html

par exemple ce paragraphe :
Citation:
Tous les mots corrects de la liste et de la requête sont pondérés en fonction de leur importance dans la liste ou la requête. De cette fa¸on, un mot présent dans de nombreuses lignes aura un poids faible (et peut être même un poids nul), car il a peu d'importance dans cette requête particulière. Au contraire, si le mot est rare, il recevra un poids fort. Le poids des mots sont alors rassemblés pour calculer la pertinence de la ligne...
 
webmasterlamogere Visiter le site web du posteur
totoro
WRInaute passionné
WRInaute passionné

Inscrit le: 28 Juil 2004
Messages: 883
Localisation: Devant le bouzin

URL permanente de ce messagePosté le : Mar Jan 22, 2008 17:46    Sujet du message: info sur requete mysql MATCH () AGAINST()

Peut etre comme ça :
Code:

select titre, texte, id, titre, date FROM articles WHERE  ( MATCH (titre) AGAINST (' Millionnaire ')) ORDER BY date DESC


Pour le my.cnf le lien que je t'ai filé http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html reste la référence pour se dépanner ... Tu n'en a pas forcément besoin, mais il faut juste savoir que des mots clés (par exemple "after" "afterwards" "again" "against", "certain" ...).
 
totoro Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Autres sujets de discussion :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort