Je travaille sur un site web qui a des utilisateurs et des articles générés par les utilisateurs, des galeries et des vidéos. J'essaie de créer un système de marquage et de les rechercher tous. Au début, je pensais en tbl_articles, tbl_galleries et tbl_videos que j'aurais un titre, une description et un champ de tags. Ensuite, exécutez une requête comme suit pour chaque:Quel système de recherche/balise est le meilleur?
select * from tbl_articles where match(title, description, tags)
against ('$search' in boolean mode) ORDER BY match(title, description, tags)
against ('$search' in boolean mode) DESC, views desc LIMIT 0, 3
La même requête pour tbl_galleries et tbl_videos. Pour les utilisateurs, il suffit de comparer le nom d'utilisateur. Ensuite, affichez trois de chaque sur la page de résultats avec un bouton «more» (style facebook). Lorsque vous regardez un article, une galerie ou une vidéo, il y aura aussi des liens vers du contenu connexe, donc je pensais utiliser la même requête seulement avec le LIMIT réglé sur '1,3' - pour éviter de s'afficher.
Q1 - Comment est ce système?
Je suis satisfait du système, jusqu'à ce que je this
où ils ont
- une table « balises » qui contient deux colonnes un id primaire et un tag_name unique indexé.
- une table « type » pour lequel ils ont un autre identifiant primaire et un unique (catégorie) indexé « type » (je pensais je pourrais l'utiliser pour utilisateur/vidéo/article/galerie)
- un ' table de recherche contenant l'adresse de l'article avec un identifiant étranger de 'tags' et 'type'. (Je pensais au lieu d'une URL complète que je pouvais stocker l'ID étranger connexes afin que je peux générer l'URL par exemple article.php id = ....?)
Q2 - Cette Le système semble beaucoup plus efficace ... mais comment rechercher le titre ou la description?
Q3 - L'autre mauvaise chose est que pour chaque page, je devrais joindre les tags ... donc ce n'est peut-être pas beaucoup plus efficace.
Q4 - Mon système recherche uniquement les booléens, serais-je mieux avec une requête 'like'? - Je limite mes utilisateurs à 4 tags, mais j'encourage les mots simples (style stackoverflow) ... Je me rends compte cependant que dans mon système une recherche de 'station de train' ne correspondra pas à une étiquette comme ' train-station "comment est-ce que je contourne ceci?
Tant de questions ... Désolé c'est trop long. Je vous remercie.
Merci pour votre réponse. Une autre question ... où recommandez-vous que je mets le titre et la description - dans leurs tables d'origine? – Mark
Il semble qu'ils utilisent tag_target_name et tag_target_url pour créer les liens vers le contenu étiqueté. Vous pouvez mettre votre titre et votre description à leur place, mais la meilleure solution est d'avoir toutes ces informations dans une table séparée "articles" et de simplement stocker l'identifiant de la ligne dans la table articles dans la table tag_targets. De cette façon, vous ne répétez pas le titre et la description de chaque tag sur chaque article. –