首页/ 填坑/ 文章详情

浅淡构建相关的文章功能

在博客网站里,文章与文章之间最紧密的关系是拥有共同的关键字,其次文章同属一个大类,一个文章的相关性根据以上条件获取相近或相似的文章。

Posts表结构:

MySQLCREATE TABLE `posts` (
  `post_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章id',
  `post_author` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '作者id',
  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '文章创建日期',
  `post_content` longtext NOT NULL COMMENT '文章内容',
  `post_title` text  NOT NULL COMMENT '文章标题',
  `post_cover` varchar(255) NOT NULL DEFAULT '' COMMENT '文章封面图片',
  `post_status` varchar(20)  NOT NULL DEFAULT 'publish' COMMENT '文章状态',
  `post_type` varchar(20) NOT NULL DEFAULT 'post' COMMENT '文章类型',
  `post_pageview` bigint(20) NOT NULL DEFAULT '0' COMMENT '文章阅读数',
  PRIMARY KEY (`post_id`),
  KEY `post_author` (`post_author`),
  KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`post_id`)
)

想要进一步加强文章之间的关联系,博客网站文章要么专攻某领域的内容,要么人为性的技术调整。

获取关键字相关文章:

MySQLSELECT post_id,post_title FROM posts 
WHERE post_id != 当前文章id AND (post_title like '%关键字%' OR post_content like '%关键字%') AND post_status='publish' 
ORDER BY RAND() 
LIMIT 0,6; 

思路讲解:

- 排除当前的文章,已展示
- 模糊查询文章标题或内容,多个关键字OR连接
- 不限文章类别,只查询已发布文章,全库查询
- 文章排序随机展示,充分深挖文章库

※ PHPAnalysis可以提炼文章内的关键字,实测效果不理想,妥妥还是手动操作。

当热情退去,原本文章更新速度由日更变月更,变年更,甚至断更,导致博客网站的文章库存数不足,相关文章不足以100%展示,数量不够,只能从其它方面补足。

补充缺少相关文章:

MySQLSELECT post_id,post_title FROM posts 
WHERE post_id NOT IN(排除文章id集) AND term_id = 类id AND post_status='publish' 
ORDER BY RAND() 
LIMIT 0,不足的数量;

思路讲解:

- 排除上一条SQL出现过的文章id,包括现在的文章id
- 选择当前文章同属下大类的文章
- 文章排序随机展示,充分深挖文章库
- 补充缺少的文章

※  在查询中,使用RAND()给文章排序,可以避免相关文章固化行为。

文章评论0 records

最新 最早

0

最新评论Latest comments

凡心的仙人凡心的仙人 03-18 14:35
谢谢你了!
rantrismrantrism 2023-04-03 11:27
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申
唐牛才是食神唐牛才是食神 2022-06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 2022-06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 2022-02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!