「相关文章」结果是越相关排名越前的案例,求一个高效的写法
我的文章系统,想按照多个件条下
,看看有什么可能性可做到
4张表 基础简介
content 文章主表
id
lid = 相关的文集id ,保存格式 (1,2,3)
tags = 相关的TAG 的ID ,保存格式 (1,2,3)
typeid = 分类ID 只为1个数字
文集
lid
name
Tags
id
name
分类
typeid
name
typeid = 分类ID, 不别多说
tag = 标签这不用多说,
lid = 一个文集, 但一篇文章可以放到多个文集, 比如: PHP+MYSQL+AJAX无刷新评论
用户可能放到 PHP文集,MYSQL文章,AJAX文集
TAG 是全站共用,重复就不新增,只会选择
所以不能做成一个自己文章的分类列表,所以会出现了文集功能
因为文章某个部分已经会显示当前文集其他的文章
所以在关相文章的部分,文集中的文件不比TAG文章更应该排在前面
所以准备的关系排名是
1. TAG相关
2. 文集
3. 最新的当前分类文章
为什么要分3次???
因为我就是怕太TAG,同时又没有用到文集功能....
所以最后一步才是当前分类文章
当前文章的
TAG 是3,14
lid = 7,12
typeid = 2
SELECT * FROM `content` WHERE `tags` IN (3,14) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `lid` IN (7,12) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `typeid` = '2' ORDER BY `time` DESC LIMIT 10
前台显示十条相关文章
本来是准备,分3次,然后每次拿10条是最安全的
后来想想...这样还有合并数组什么的也麻烦,重点是取太多资料,但前台只需要10条
所以换成一句
SELECT * FROM `video_content` WHERE `tags` IN (3,14) or `lid` IN (3) or `typeid` = 2 LIMIT 10
但这样好像又能以TAG>文集>分类...去排名
请求一下有何方法?
要求好像蛮麻烦的呵呵,因为页面下半部有50%的部分是显示相关文章,所以在营运上很重要
回复讨论(解决方案)
暂时用了这一段代码,感觉有点蠢
有什么更好的方法建议呢?
//相关文章if (!empty($data["tags"]) || !empty($data["lid"])) { $tags = $data["tags"]; $lid = $data["lid"]; $tag_sql = "SELECT * FROM `content` WHERE `tags` IN ($tags) OR `lid` IN ($lid) ORDER BY `time` DESC LIMIT 8"; $stmt = $pdo->prepare($tag_sql); $stmt->execute(); $tags_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_v",$tags_v);}$tags_num = count($tags_v);if ($tags_num < 8 ) { $now_v = ""; foreach ($tags_v as $key => $value) { $now_v .= $value['vid'].","; } $now_v=substr("$now_v",0,-1); $need = 8-$tags_num; $typeid = $data["typeid"]; $typeid_sql = "SELECT * FROM `content` WHERE `typeid` = '$typeid' AND `vid` NOT IN ($now_v) ORDER BY `time` DESC LIMIT $need"; $stmt = $pdo->prepare($typeid_sql); $stmt->execute(); $typeid_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_tv",$typeid_v);}
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
这个我也了解
但更想知道的是,如果按照更有关的排得更前
就是先排TAG 再排LID 最后再排同类其他文章
莫非只能用二楼的方法?
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
是的
2楼暂时做了个简单的
暂时先不分tag和lid
不够再取type
以及2楼用8条做测试
是否有更好的做法?
用全文检索来做

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les classements majeurs nationaux en informatique 2024CSRankings viennent d’être publiés ! Cette année, dans le classement des meilleures universités CS aux États-Unis, l'Université Carnegie Mellon (CMU) se classe parmi les meilleures du pays et dans le domaine de CS, tandis que l'Université de l'Illinois à Urbana-Champaign (UIUC) a été classé deuxième pendant six années consécutives. Georgia Tech s'est classée troisième. Ensuite, l’Université de Stanford, l’Université de Californie à San Diego, l’Université du Michigan et l’Université de Washington sont à égalité au quatrième rang mondial. Il convient de noter que le classement du MIT a chuté et est sorti du top cinq. CSRankings est un projet mondial de classement des universités dans le domaine de l'informatique initié par le professeur Emery Berger de la School of Computer and Information Sciences de l'Université du Massachusetts Amherst. Le classement est basé sur des objectifs

1. Comment pouvez-vous gagner de l'argent en publiant des articles sur Toutiao aujourd'hui ? Comment gagner plus de revenus en publiant des articles sur Toutiao dès aujourd'hui ! 1. Activer les droits et intérêts fondamentaux : les articles originaux peuvent générer des bénéfices grâce à la publicité, et les vidéos doivent être originales en mode écran horizontal pour générer des bénéfices. 2. Activez les droits de 100 fans : si le nombre de fans atteint 100 fans ou plus, vous pouvez tirer des bénéfices des micro-titres, de la création originale de questions-réponses et des questions-réponses. 3. Insistez sur les œuvres originales : les œuvres originales comprennent des articles, des micro-titres, des questions, etc., et doivent contenir plus de 300 mots. Veuillez noter que si des œuvres illégalement plagiées sont publiées en tant qu'œuvres originales, des points de crédit seront déduits, et même les éventuels bénéfices seront déduits. 4. Verticalité : lorsque vous rédigez des articles dans des domaines professionnels, vous ne pouvez pas écrire à volonté des articles dans tous les domaines, vous n'obtiendrez pas de recommandations appropriées, vous ne pourrez pas atteindre le professionnalisme et le raffinement de votre travail et il sera difficile d'attirer des fans. et les lecteurs. 5. Activité : forte activité,

Traitement des formulaires PHP : tri et classement des données des formulaires Dans le développement Web, les formulaires sont une méthode de saisie utilisateur courante. Après avoir collecté les données du formulaire auprès des utilisateurs, nous devons généralement traiter et analyser les données. Cet article explique comment utiliser PHP pour trier et classer les données d'un formulaire afin de mieux afficher et analyser les données soumises par les utilisateurs. 1. Tri des données de formulaire Lorsque nous collectons les données de formulaire soumises par les utilisateurs, nous pouvons constater que l'ordre des données ne répond pas nécessairement à nos exigences. Pour ceux qui doivent être affichés ou divisés selon des règles spécifiques

Introduction à l'écriture de base et à l'utilisation des fonctions de rappel Java : dans la programmation Java, la fonction de rappel est un modèle de programmation courant. Grâce à la fonction de rappel, une méthode peut être transmise en tant que paramètre à une autre méthode, réalisant ainsi un appel indirect de la méthode. L'utilisation de fonctions de rappel est très courante dans des scénarios tels que la programmation événementielle et asynchrone et la mise en œuvre d'interfaces. Cet article présentera l'écriture et l'utilisation de base des fonctions de rappel Java et fournira des exemples de code spécifiques. 1. Définition de la fonction de rappel Une fonction de rappel est une fonction spéciale qui peut être utilisée comme paramètre

Explication détaillée de la façon d'écrire le signe inférieur à dans MyBatis MyBatis est un excellent framework de couche de persistance largement utilisé dans le développement Java. Dans le processus d'utilisation de MyBatis pour les opérations de base de données, nous utilisons souvent le signe inférieur à (

Les fonctions de classement et de comparaison des graphiques statistiques Vue sont implémentées dans le domaine de la visualisation des données. Les graphiques statistiques constituent un moyen intuitif et clair d'afficher les données. En tant que framework frontal populaire, Vue fournit une multitude d'outils et de composants pour implémenter divers graphiques. Cet article expliquera comment utiliser Vue pour implémenter les fonctions de classement et de comparaison des graphiques statistiques. Avant de commencer, nous devons installer Vue et les bibliothèques de graphiques associées. Nous utiliserons Chart.js comme bibliothèque de graphiques, qui fournit des types de graphiques riches et des fonctions interactives. C peut être installé via la commande suivante

Révélation exclusive ! Le dernier classement des processeurs Snapdragon Avec le développement rapide des appareils mobiles tels que les smartphones, les processeurs, en tant que puces principales des appareils mobiles, évoluent et se mettent également à niveau constamment. En tant que l'un des processeurs les plus populaires du marché, les processeurs Snapdragon de Qualcomm ont beaucoup attiré l'attention. Les processeurs Snapdragon ont toujours occupé une place sur le marché des processeurs pour appareils mobiles grâce à leurs excellentes performances, leur contrôle de la consommation d'énergie et leur intégration élevée. Alors, parmi les nombreux processeurs Snapdragon, lequel est le meilleur ? Cet article vous dévoilera les secrets du processeur Snapdragon

L'USDT (Tether) est une crypto-monnaie ancrée sur la monnaie légale, avec un ratio de 1:1 par rapport au dollar américain. En tant que l’une des pièces stables les plus populaires, l’USDT est largement utilisé dans les transactions de crypto-monnaie à travers le monde. Pour les utilisateurs intéressés par l’achat ou le trading de l’USDT, il est crucial de choisir une plateforme de trading fiable et sécurisée. Ce qui suit est un classement des dix meilleures applications logicielles de plateforme de trading USDT pour vous aider à choisir la plateforme qui vous convient le mieux. 1. Binance Binance est l'une des plus grandes plateformes de trading de cryptomonnaies au monde, avec une large base d'utilisateurs et diverses variétés de trading. En tant que plateforme de trading USDT populaire, Binance fournit une variété d'outils et de fonctionnalités de trading conçus pour garantir la sécurité et la commodité des transactions des utilisateurs. 2. HuobiG
