文章内链(标签)的一个思路

作者:shen.li 来源:秋寒博客 时间:2009-10-31 19:03:00 

昨天晚上睡觉前突然想到的,在此记一笔。

传统方式

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

数据库:
article(文章表)
id, title, body, adddate, userid

keyword(内链表)
id, name, link

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

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

分析比较

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

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

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

可行操作

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

主动方式的实现方法目前我只想到一个,下有简述,如果您有更好的方法,欢迎交流!

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

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

此个方法我尚未实践,欢迎大侠测试实践。

标签:标签,内链,文章,分词
0
投稿

猜你喜欢

  • MySQL安全性指南 (1)(转)

    2010-07-27 12:49:00
  • 网站数据库,是选SQL Server还是Access好

    2008-05-23 13:19:00
  • 用ASP建立一个简单的聊天室

    2007-09-21 12:43:00
  • asp 隐藏并修改文件的最后修改时间

    2011-03-29 10:34:00
  • HTML中事件触发列表与解说

    2007-10-22 12:50:00
  • MySQL数据库备份的基础知识大全

    2009-12-20 18:14:00
  • 视觉对交互的帮助——提升可用性

    2008-10-16 13:16:00
  • XMLHttp ASP远程获取网页内容代码

    2011-04-10 10:41:00
  • javascript彩虹圈效果

    2011-08-05 19:10:45
  • 解析ASP的Application和Session对象

    2007-09-14 10:13:00
  • sqlserver 数据库连接字符串中的可选项收集

    2011-10-24 19:48:37
  • 开心网上input输入框研究

    2009-03-06 12:52:00
  • 也谈网页圆角的背景图法

    2009-03-19 14:09:00
  • [翻译]标记语言和样式手册 Chapter 15 为body指定样式

    2008-02-21 12:36:00
  • ASP:使用ImageMagickObject组件制作缩略图

    2008-10-21 12:21:00
  • Flash如何连接Mysql

    2010-11-11 11:57:00
  • ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页

    2011-04-06 10:50:00
  • SQL学习笔记五去重,给新加字段赋值的方法

    2011-09-30 11:53:28
  • Oracle AS关键字 提示错误

    2011-04-18 12:42:00
  • 导航与搜索合并的可能性

    2009-09-27 12:06:00
  • asp之家 网络编程 m.aspxhome.com