2009年9月3日星期四

网站文章内链的一个思路

  内链:顾名思意就是在自己网站的内容中的相关文字加入链接,并且链接到网站内部的相关页面。合理的网站内空链接构造,能提高搜索引擎的收录与网站权重。相对外部链接,内部链接也很重要。

  传统方式

  以前我们做文章系统或新闻发布系统的时候,做文章内链(标签)的时候,通常是通过以下方式来实现的:

  数据库:article(文章表)字段(id, title, body, adddate, userid),keyword(内链表)字段(id, name, link)

  在发布文章的时候,循环内链表内的所有,来替换文章的body。

  这样确实是实现了想要的功能,但是如果我们的内链表的数据达到很大的数目,比如2W、5W或更多的时候。每发布和修改一片文章的效率是可想而知的。那么网易的新闻、百度的百科等这样打大型网站是如何实现的呢?如果按照以上的做法,那系统在几个月后就直接崩溃了。

  分析比较

  一篇正常的文章会有多少字(不计HTML代码)?1W?我想1W的文章已经算是很长的了,而且想在如果直接在一个页面显示1W的文章相信没有几个人有耐心能看完的。为了页面美观和用户体验,编辑通常都是将内容过多、篇幅超长内容的文章分段处理(分为几篇文章,或分章节)。如果我们能事先将可能出现内链的字从文章中提取出来,再从数据库里检索,这样效率是不是就可以得到很大的提高?答案是肯定的。我们就拿1W字的文章来说,假设文章的所有文字都需要内链,循环的次数是1W次。比上面的例子假设要强得多吧?

  在传统方式中,不管你要不要,把内链表的东西全查一边。而下面这种思路是事先将有可能出现内链的字词全部整理出来,再用这些词分别去检索内链表。这样一比较问题就出来了。

  新思路就是:从文章中取出需要内链的字词,然后去查询内链表。

  可行操作

  我们暂且把传统方式称为被动方式,把新思路的方法称为主动方式。

  主动方式的实现方法如下。

  利用中文分词技术,我们可以对一篇文章进行分词。然后根据分词后的词表,过滤掉常用的物主代词、副词、感叹词等。把名词、品牌、地名、商标等留下,或者根据自己的词库表来分词。然后把剩余的字词去检索内链表,如果有存在,我们就坐上链接,不存在就PASS。

  以上只是思路的一个初步构思,在实际实现过程中需要考虑的因素很多。我觉得重点就在分词这个环节。

  来源:读者沈力投稿