你的相关阅读够“相关”吗

浏览次数:1373 发布日期:2014/1/20

 为了增加内链,也为了方便用户浏览更多相关的网页,许多网站都设置了“相关阅读”,或“猜你喜欢”之类的栏目,然而我发现有不少网站的相关阅读每个网页都是一样的,并且有时相关性也不强,琢磨后发现,原来站长设置的相关阅读其实是数据表里的最近几条记录罢了,它使用的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)提供,转载请注明出处。

  • 售前产品咨询:0551-63668511 售后服务咨询:0551-63670030(7x24) 投诉电话:18919656802
  • 投诉QQ: 518111 318735112
售前QQ咨询
点击这里给我发消息炎黄波波点击这里给我发消息炎黄潴潴点击这里给我发消息炎黄娟娟点击这里给我发消息炎黄玲玲
企业QQ
联系我们
安徽炎黄网络科技有限公司
通讯地址:安徽省合肥市蜀山区天智路5号同创科技园1号楼17层