< 返回新闻公共列表
你的相关阅读够“相关”吗
发布时间:2014-01-20 00:00:00
为了增加内链,也为了方便用户浏览更多相关的网页,许多网站都设置了“相关阅读”,或“猜你喜欢”之类的栏目,然而我发现有不少网站的相关阅读每个网页都是一样的,并且有时相关性也不强,琢磨后发现,原来站长设置的相关阅读其实是数据表里的最近几条记录罢了,它使用的SQL查询语句大致是这样:
select id,title from mytb order by id desc limit 8
这样的查询,有明显的两个缺陷:
1. 查找到的结果并不能保证是相关的;
2.会照成大量的页面使用了相同的相关阅读,用户体验不好,同时也占据了其它数据曝光的机会。
其实,这个查询语句稍微优化下,就可以改善“相关阅读”,方法如下:
分析:首先判断当前网页的数据id在整个表中所处的位置,分为三种情况(取8条记录为例):
1. 当前id小于升序下的第4条id;
2. 当前id大于降序下的第4条id;
3.当前id处于这两者之间。
先得到数据表的最大(maxid)和最小(minid) id:
select max(id) maxid from mytb;
select min(id) minid from mytb;
然后在程序中使用判断语句,比如在php中:
$num=$id+4;
$where=" order by id desc";
if($id<$maxid-4 && $id>$minid+4) $where="and id<$num order by id desc";
if( $id<$minid+4) $where="and id>$minid order by id asc";
$sql="select id,title from mytb where id !=$id $where limit 8 ";
通过上述方法取出来的值会随着当前ID的变化而变化,特别是当你上传文章的时候,如果把相关性的文章紧挨着上传,那么相关性就会更强。
当然,也可以使用匹配关键词的方式,但是一篇文章往往有好几个关键词,何况相关阅读往往是在同一栏目下进行的,查询效率远没有上面提供的方法强。
由大成网(http://www.phpdo100.com)提供,转载请注明出处。