文章内链(标签)的一个思路
作者: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。
以上只是思路的一个初步构思,在实际实现过程中需要考虑的因素很多。我觉得重点就在分词这个环节。
此个方法我尚未实践,欢迎大侠测试实践。


猜你喜欢
- 解决方法一:使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家
- 最近在学一些基础的算法,发现我的数学功底太差劲了,特别是大学的这一部分,概率论、线性代数、高数等等,这些大学学的我是忘得一干二净(我当时学的
- 从控制台输入要出的拳 —— 剪刀(0)/石头(1)/布(2) 电脑 **随机*
- 前言在新的一年里祝大家前端都用ES6,php都用PHP7,Java都是JAVA9,python都是3。好了,下面进入本文的主要的内容,大家可
- 利用Python,将多个excel文件合并为一个文件思路利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用
- whoosh的官方介绍:http://whoosh.readthedocs.io/en/latest/quickstart.html因为做的
- Cookie的英文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器发送给客户的“点心”。服务器可
- 1、更新整张表,如果某一行数据的某一列的值为空,那么让他和另一列字段的值相等UPDATE ot_tgbz set update_day=if
- 本文实例讲述了Python实现简单过滤文本段的方法。分享给大家供大家参考,具体如下:一、问题:如下文本:## Alignment 0: sc
- 一、python单行注释符号(#)python中单行注释采用 #开头示例:#this is a comment二、批量、多行注释符号多行注释
- 我就废话不多说了,大家还是直接看代码吧~type Animal struct { ID int64 Name string `gorm:&q
- 但是,当一本书学过之后,对一般的技术和函数都有了印象,突然想要查找某个函数的实例代码时,却感到很困难,因为一本书的源代码目录很长,往往有几十
- 1.在查询分析器理启动或停止SQL Agent服务 启动 use master go xp_cmdshell
- 两张表 组织架构表(Organise) 和 工资发放历史记录表 (WagePerMonthHis) 两张表通过 Organise.Item_
- 首先我们来安装python1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads
- 蚁群算法简介蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agen
- 很多人错误地认为ASP是简单、低效的代名词,认为ASP是低能的,不足挂齿的,也很简单,一学就会,一琢磨就精通。有人讲ASP不安全,写ASP的
- CentOS 7上PHP默认是以apache或者nobody的身份运行的,这种方式下由于PHP运行需要的权限比较大,会有安全隐患,还可能会受
- 最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等
- 一、拉格朗日的基本思想拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用