关于相关文章推荐的实现方式

关于相关文章推荐的实现方式

rude 暂无评论
SEO工具

一个客户的网站,列表页和文章页左侧都有【最新文章】及【相关文章】推荐模块,但是【最新文章】及【相关文章】的调取规则,都是按照文章发布的先后顺序来进行的,换句话说,目前两个板块显示的内容一模一样。

身为有些许强迫症的我,实在是,不忍直视,好了,开始花时间,找相关文章的实现方式。

当然,肯定也会找到很多我用不到的,姑且整理一下,以后便于大家参考使用吧。

1、Dede

先来一个Dede的,虽然他漏洞多,很容易被攻击,很容易被挂黑链,很容易被很多人所嗤之以鼻:

调取同一栏目下相关文章的代码实现如下:

<div>
<dl>
<dt><strong>相关文章</strong></dt>
<dd>
<ul>
{dede:likearticle col=’2′ row=’10’ titlelen=’42’}
<li><a href=”[field:arcurl/]”>[field:title/]</a></li>
{/dede:likearticle}
</ul>
</dd>
</dl>
</div>

当然,如果你有更高的需求,想要调取整站的相关文章,那就需要更改一个系统文件,具体路径如下:

\include\taglib\likearticle.lib.php

在其中找到代码:$typeid=”And arc.typeid in($typeid) And

arc.id<>$arcid”;

修改为:$typeid=”And
arc.id<>$arcid”;

2、WP

接着必须是wp啊,当然关于wp中的这个玩意,一个插件轻松可以搞定,绝对的so easy啊,尤其是对于我们这种代码痴来说。

比如我的博客,用的插件名称为:Contextual Related Posts,一直感觉很不错。

当然,这里需要提醒大家的是:插件虽然很多,也很好用,但是请不要多个同时使用,否则有可能会造成冲突,轻则导致url规则混乱,重则其它无法预知的隐患,更为蛋疼的是,这些错误,如果你不认真查看的话,还十分的不容易觉察到。

3、使用第三方工具

关于这个第三方工具,目前看到的最多的,应当属无觅插件与百度的相关文章推荐功能了。

关于无觅插件这件事,可以移步松松的博客看取更多的信息,这里就不再赘述了。

关于百度插件这件事,只要你使用百度统计账号,就可以获取代码进行安装,样式多样,展现形式可自动配置,而且可以对用户的点击数据进行分析。想要了解详情的请点击:http://tuijian.baidu.com/。想要看展示效果的,可以看下我的博客的下端吧。

比较可惜的是,百度的相关文章推荐是js实现的,搜索引擎无法抓取(不过谷歌说他已经可以读取js了哦)。

4、关于程序实现

说起这个程序实现,想必大家首先想到的,应当是用tag关键字关联吧,实现的原理很简单,每篇文章写上相应的tag,然后查某tag下有多少篇文章,然后根据时间的先后顺序进行展示。

当然,这里也有一些相对实现比较复杂的(可能对我来说比较复杂吧),具体可见谷歌黑板报中的文章

在我所面临的问题中,我最终是建议客户这样实现的:

1、找到每个列表页中的关键字。

2、用sql语句查询文章的标题,只含有一个关键字,直接用like查询,查询出结果;如果是两个或者多个词,标题中同时包含这些关键字的获取出来,如果没有结果,则只要包含这些关键字其中之一即可。

3、按照时间发布的先后顺序显示出来(新发布的优先展示)。

当然,这个说的是列表页,在网上还找到了在数据库查询中给某个关键词加权的方法(关于为什么要加权,请查看TF-IDF):
$sql = " select * from ( ".
        " SELECT p . * , SUM( LOG( $published_posts/ C.weight ) ) AS weighted, rand() as ranknumber ".
        " FROM wp_posts p, wp_term_relationships r ".
        " LEFT JOIN ( ".
        " SELECT tt.term_taxonomy_id AS term_taxonomy_id, COUNT( rr.object_id ) AS weight ".
        " FROM wp_term_taxonomy tt, wp_term_relationships rr, wp_posts pp ".
        " WHERE tt.term_taxonomy_id = rr.term_taxonomy_id ".
        " AND rr.object_id = pp.ID ".
        " AND pp.post_status =  'publish' ".
        " GROUP BY tt.term_taxonomy_id ".
        " )C ON C.term_taxonomy_id = r.term_taxonomy_id ".
        " WHERE p.ID = r.object_id ".
        " AND p.post_status =  'publish' and p.post_type = 'post' ".
        " AND p.ID <>  '$ID' ".
        " AND r.term_taxonomy_id ".
        " IN ( SELECT term_taxonomy_id FROM wp_term_relationships WHERE object_id =  '$ID' )  ".
        " GROUP BY p.ID ".
        " ORDER BY weighted DESC, ranknumber DESC ".
        " LIMIT $limit)D ".
        " where D.weighted>$threshhold ".
        " order by D.weighted DESC, D.post_date ";

鉴于本人的代码识别能力,不知道能不能用,哈哈,这里也给原文丢一个链接一是尊重别人的劳动成果,二是给想看更多的技术人员一个入口。
文军二维码

发表评论

今日说说

    问:做什么事情会让你成就感爆棚?

    答:做让你感觉心理畏惧的事情,做完之后你会发现,去TMD,不过如此。

站内搜索