Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
1 août 2007 à 18:31
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
1 août 2007 à 20:27
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 !
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 1 août 2007 à 20:11
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)
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 1 août 2007 à 18:51
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...
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 1 août 2007 à 19:50
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.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 1 août 2007 à 20:27
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 :)