Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Moteur de recherche par tags [ Base de données / MySQL ] (Evangun)

mercredi 1 août 2007 à 18:31:00 | Moteur de recherche par tags

Evangun

Hello,

je me demandais quelle était la meilleure technique pour construire un moteur de recherche par tags.

Chaque article créé possède trois tags. Quelle est la meilleure façon de faire une recherche dessus ? Si on laisse tomber les problématiques de singulier/pluriel/faute d'orthographe/synonymes, que vaut-il mieux :

- mettre les trois tags dans la même table que l'article lui-même dans trois champs de bdd différents (recherche avec WHERE champ1 = xx OR champ 2 = xx OR champ3 = xx),
- idem mais dans un seul champ (recherche avec LIKE, ou plutôt MATCH avec FULLTEXT ?),
- créer une seule table qui contiendrait tous les tags (comme un dictionnaire), renverrait les id des articles qui contiennent ce mot en tag ?

Si vous avez des pistes là-dessus n'hésitez pas. Merci beaucoup !

mercredi 1 août 2007 à 18:51:30 | Re : Moteur de recherche par tags

J_G

Salut,

"créer une seule table qui contiendrait tous les tags (comme un dictionnaire), renverrait les id des articles qui contiennent ce mot en tag ?" bien sûr...


Si ça te pose pb, demande


A+


mercredi 1 août 2007 à 19:50:30 | Re : Moteur de recherche par tags

Evangun

Bonsoir, et merci de ton aide

la réalisation en elle-même ne me pose pas de problème, je me pose plutôt des questions sur les performances. Par exemple, puisqu'on garde l'idée de l'index, vaut-il mieux faire :
- une table pour les mots et une table index pour leurs correspondances avec les articles, mais ça demande une jointure (consommation de ressources en plus ?)
ou plutôt
- une seule table les mots + les id des articles associés dans un autre champ (séparés par des virgules par exemple)

Parce que je me dis que c'est surement ce qui  prend le plus de ressources sur un site, vu qu'il faut balayer des milliers de lignes, alors est-ce une bonne idée de se débarasser de la jointure ? D'une manière générale, je manque complètement de repères sur les performances des différentes fonctions SQL, lesquelles sont rapides et lesquelles sont lentes.

Merci !

mercredi 1 août 2007 à 20:11:51 | Re : Moteur de recherche par tags

J_G

Réponse acceptée !
Je ne pense pas qu'il faut te faire beaucoup de soucis concernant les performances d'une jointure. t le gros intérêt de faire une table uniquement pour les tags est que tu n'est alors plus limité à 3 tags par élement!!! Un plus évident


Ce que je te conseille même de faire :

Une table des tags
Tags
 id - PK, Int, autoincrement
 tag - Unique, VarChar(255)

insérer un(des) tag(s) :
insert ignore into Tags ('tag') values ('Bonjour'), ('salut'), ...

Une table de liaison entre Tags et les elements
Tagged
  tag_id
  object_id



...
Alors, pour trouver tous les tag de l'objet X

select tag
from Tags
cross join Tagged on (tag_id= id)
where object_id = 'X'

Trouver tous les objets avec le tag 'xyz'

select *
from objects
where objects in (
    select object_id
    from tagged
    cross join tags on (id = tag_id)
    where tag = 'xyz'
)


Et ainsi de suite...





mercredi 1 août 2007 à 20:27:18 | Re : Moteur de recherche par tags

Evangun

Oui c'est vrai, je n'avais même pas pensé que le fait de ne faire qu'une table de mots rendaient la recherche inverse (chercher les tags d'un article en particulier) fort compliquée...
Et puis c'est vrai qu'ainsi il n'y a aucune raison de ne pas passer à 5 tags finalement :)

Merci pour le coup de main J_G !
à+



Cette discussion est classé dans : recherche, xx, trois, moteur, tags


Répondre à ce message

Sujets en rapport avec ce message

moteur de recherche [ par fatNugly ] Bonjour, j'ai des petites questionsle quel des languages suivant php, c, est il le plus adequat pour faire un moteur de recherche dans une page?? la c moteur de recherche [ par fatNugly ] Bonjour, j'ai des petites questionsle quel des languages suivant php, c, est il le plus adequat pour faire un moteur de recherche dans une page??la cr excuser moi vous avez une idee ?. [ par flashx ] flashxsalut ya t'il quelqu'un qui a une idee pour faire un robot de moteur de recherche car je sais pas comment ca marche de trop la je vais cree un m moteur de recherche alphabétique [ par princeg ] Quelqu'un peut-il m'aider, please? je voudrais créer un moteur de recherche alphabétique comme celui présent sur le site www.zouklist.fr.st et en plu amélioration d'un moteur de recherche [ par Coundelitch ] bonjour !J'aimerai savoir quelles sont les solutions envisagable, afin d'améliorer mon moteur de recherche.Pour info c'est un moteur de recherche en P Requete sur moteur de recherche [ par sana72 ] Bonjour, Je voudrais creer un script qui me permettrait de savoir a quelle position se trouve mon site sur un ou des moteur de recherche, Voila l'idée Creation d'un moteur de recherche [ par Coundelitch ] bonjour !Je dois créer un moteur de recherche en PHP. Ce moteur cherchera dans un dossier des fichiers au format HTML.C'est peut-etre simple mais le p moteur de recherche à partir d'un formulaire [ par cindy648 ] Je dois faire un moteur de recherche en php et je n'y connais rien du tout, pouvez-vous m'aider??? 8)Ce moteur de recherche devra répondre aux requète Moteur de recherche [ par NDK ] Bonjour à tous !!!J'aimerais réaliser en php, un moteur de recherche style net2one si vous connaissez.la différence de ce moteur de recherche par rapp Ajouter la troncature dans un moteur de recherche [ par baboun ] Bonjour, je viens crier au secours.Je tente d'insérer un système de troncature dans mon moteur de recherche php sur base de donnée MySQL.(Sans vouloir


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.