Comment programmer un moteur de recherche efficace ?
9 messages
• Page 1 sur 1
- beenie
- WRInaute discret

- Messages: 54
- Inscription: 18 Aoû 2008
Comment programmer un moteur de recherche efficace ?
Bonjour,
J'essaie de mettre en place un moteur de recherche et je me trouve face à deux difficultés :
-comment faire si les personnes tapent les mots sans accents alors que dans la base de donnée les accents sont représentés sous la forme : é = & eacute; par exemple
-comment faire pour gagner en pertinence car pour l'instant je construit une requête avec les différents mot trouvés: select * from maTable where description like %mot1% OR description like %mot2%, etc....
Si j'utilise AND, alors il n'y pas assez de résultat
SI j'utilise OR j'ai trop de resultat
Voilà donc je recherche les pistes pour améliorer le moteur, comment les programmez-vous pour qu'ils soient efficaces?
merci.
J'essaie de mettre en place un moteur de recherche et je me trouve face à deux difficultés :
-comment faire si les personnes tapent les mots sans accents alors que dans la base de donnée les accents sont représentés sous la forme : é = & eacute; par exemple
-comment faire pour gagner en pertinence car pour l'instant je construit une requête avec les différents mot trouvés: select * from maTable where description like %mot1% OR description like %mot2%, etc....
Si j'utilise AND, alors il n'y pas assez de résultat
SI j'utilise OR j'ai trop de resultat
Voilà donc je recherche les pistes pour améliorer le moteur, comment les programmez-vous pour qu'ils soient efficaces?
merci.
-

dorian53 - WRInaute passionné

- Messages: 2215
- Inscription: 10 Avr 2005
Re: Comment programmer un moteur de recherche efficace ?
Salut,
La franchement ça va être compliqué et surtout très lourd. Il vaut mieux avoir les accents directement.
Pour récupérer une liste de résultats pertinente comme un moteur de recherche il existe des fonctions propres au SGBD.
Par exemple, si tu utilises MySQL, il faut que tu indexes ton champ en fulltext et utilise la fonction MATCH / AGAINST.
http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
beenie a écrit:-comment faire si les personnes tapent les mots sans accents alors que dans la base de donnée les accents sont représentés sous la forme : é = & eacute; par exemple
La franchement ça va être compliqué et surtout très lourd. Il vaut mieux avoir les accents directement.
beenie a écrit:-comment faire pour gagner en pertinence car pour l'instant je construit une requête avec les différents mot trouvés: select * from maTable where description like %mot1% OR description like %mot2%, etc....
Si j'utilise AND, alors il n'y pas assez de résultat
SI j'utilise OR j'ai trop de resultat
Pour récupérer une liste de résultats pertinente comme un moteur de recherche il existe des fonctions propres au SGBD.
Par exemple, si tu utilises MySQL, il faut que tu indexes ton champ en fulltext et utilise la fonction MATCH / AGAINST.
http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
-

stopher - Nouveau WRInaute

- Messages: 16
- Inscription: 10 Mar 2010
Re: Comment programmer un moteur de recherche efficace ?
Salut ,
Pour la gestion des accents , il te suffit d'utiliser des tables avec des champs encodés en "utf8_general_ci" , mysql ne tiendra plus compte des accents pour tes recherches .
Ch.
dorian53 a écrit:Salut,beenie a écrit:-comment faire si les personnes tapent les mots sans accents alors que dans la base de donnée les accents sont représentés sous la forme : é = & eacute; par exemple
La franchement ça va être compliqué et surtout très lourd. Il vaut mieux avoir les accents directement.
Pour la gestion des accents , il te suffit d'utiliser des tables avec des champs encodés en "utf8_general_ci" , mysql ne tiendra plus compte des accents pour tes recherches .
Ch.
- jv2759
- WRInaute occasionnel

- Messages: 409
- Inscription: 21 Nov 2008
Re: Comment programmer un moteur de recherche efficace ?
Sinon autre solution si tu as un peux de place dans tes base de donnée et beaucoup de pages c'est de faire un prêt traitement.
Tu crée 2 table
motcle
id
mot
liaison
idmc
idpage
score
- tu récupère le texte de ta pages
- tu fait un htmldecode
- puis tu remplace les accents par leur équivalent sans
- tu découpe en mots
- tu supprime les mots non significatif (pour alléger et simplifier)
- tu met tout les mot nouveaux que tu trouve dans la table motcle
- puis pour chaque mots tu met une entré dans la table liaison. Le score tu peux mettre par exemple le nombre de fois ou le mots aparais dans la pages (a affiner en fonction des besoin)
Ensuite quand tu fait une recherche, tu fait la même chose :
- htmldecode
- remplacer les accents
- découper en mots
- supprimer les mots non significatif
- enfin une recherche avec un = (plus léger qu'un like ou match)
inconvénient
- plus lourd à mettre en œuvre
- obligation de faire un pré-traitement
- peux retourner mois de résultat
- consomme de l'espace base
avantage
- requette plus légère, surtout si beaucoup de texte à analyser
- plus grand maitrise de l'algorithme et possibilité d'affiner les score
- traitement d'autres chose que du texte en base possible.
Tu crée 2 table
motcle
id
mot
liaison
idmc
idpage
score
- tu récupère le texte de ta pages
- tu fait un htmldecode
- puis tu remplace les accents par leur équivalent sans
- tu découpe en mots
- tu supprime les mots non significatif (pour alléger et simplifier)
- tu met tout les mot nouveaux que tu trouve dans la table motcle
- puis pour chaque mots tu met une entré dans la table liaison. Le score tu peux mettre par exemple le nombre de fois ou le mots aparais dans la pages (a affiner en fonction des besoin)
Ensuite quand tu fait une recherche, tu fait la même chose :
- htmldecode
- remplacer les accents
- découper en mots
- supprimer les mots non significatif
- enfin une recherche avec un = (plus léger qu'un like ou match)
inconvénient
- plus lourd à mettre en œuvre
- obligation de faire un pré-traitement
- peux retourner mois de résultat
- consomme de l'espace base
avantage
- requette plus légère, surtout si beaucoup de texte à analyser
- plus grand maitrise de l'algorithme et possibilité d'affiner les score
- traitement d'autres chose que du texte en base possible.
-

Leonick - WRInaute accro

- Messages: 19592
- Inscription: 8 Aoû 2004
Re: Comment programmer un moteur de recherche efficace ?
je n'ai jamais trouvé fulltext performant.dorian53 a écrit:http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
Pour un "bon" moteur de recherches, j'ai vu passer sur wri il y a 2-3 semaines, un post sur sphinx. visiblement il a l'air d'être puissant, mais pas évident à paramétrer
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Comment programmer un moteur de recherche efficace ?
Et pourquoi pas ré encoder la recherche de l'utilisateur avec une petite fonction qui échangerait les é par & eacute; et compagnie .. puis effectuer la recherche en utilisant REGEXP au lieu de LIKE ?
Bon, c'est juste une idée et peut être pas la meilleurs
Bon, c'est juste une idée et peut être pas la meilleurs
-

Leonick - WRInaute accro

- Messages: 19592
- Inscription: 8 Aoû 2004
Re: Comment programmer un moteur de recherche efficace ?
sauf que dans la BDD, c'est quand même mieux d'avoir directement les caractères accentués et pas sour forme d'entitétryan a écrit:Et pourquoi pas ré encoder la recherche de l'utilisateur avec une petite fonction qui échangerait les é par & eacute; et compagnie .. puis effectuer la recherche en utilisant REGEXP au lieu de LIKE ?
Bon, c'est juste une idée et peut être pas la meilleurs
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Comment programmer un moteur de recherche efficace ?
Je suis daccord et je partais juste de l'hypothèse qu'il a déjà pas mal contenu et qu'il voulait "greffer" un moteur de recherche interne à son site sans avoir besoin de se retaper les corrections ^^.
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Un moteur de recherche efficace ?
- Nouveau moteur de recherche très efficace et gratuit
- Publicité ciblée et cloaking. Comment programmer ça ?
- Efficace le moteur de Yahoo
- Comment référencer un moteur de recherche?
- Moteur de recherche mais comment.... ?
- phpbb - Comment fonctionne le moteur de recherche ?
- moteur de recherche WRI... comment se fait-il??
- Comment on fait un moteur de recherche externe ?
- comment créer SON moteur de recherche ???
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

