浅谈布隆过滤器在内容管理系统中应用.docVIP

浅谈布隆过滤器在内容管理系统中应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈布隆过滤器在内容管理系统中应用

浅谈布隆过滤器在内容管理系统中应用   摘要:内容管理系统的内容采集主要由爬虫进行搜集,但内容重复与否绝大多数情况下是根据内容所在的页面URI进行判定。作为一个完善的内容管理系统,必须具备对已有内容资源的识别功能。本文通过介绍布隆过滤器,并与传统的判重方式进行对比,同时改进布隆过滤器并应用于内容管理系统的资源判重的功能中,解决了内存占用无限增加,查询时间不断增长,记录内容无法删除等问题,实现了高效快速的资源判重。   关键词:计算机工程;布隆过滤器;内容管理系统;爬虫;哈希   中图分类号:TP399   文献标识码:A   DOI:10.3969/j.issn.1003-6970.2016.01.008   0 引言   Web信息的采集通常是利用网络爬虫等工具遍历万维网,它把万维网看作一个以网页为节点,网页间链接为边的超大规模有向图,然后利用图的遍历算法对万维网进行遍历。在网络遍历的过程中.需要判断待采集的页面是否已经采集过了,这就需要把已经采集的网页地址记录下来,组成已采集网页地址集合(记为:visited-set),当新的采集开始之前,首先判断其地址是否在visited-set中,如在其中,表示网页已经采集,否则采集网页,把网页地址放在visited-set中,从而避免网页的重复采集,浪费资源。为了实现集合中数据的快速查找,需要把URL映射为集合中的地址,这就需要设计一种高效且冲突率低的散列算法;同时由于万维网上网页数据的巨大,普通的Hash算法已经不能满足空间的要求,所以更需要一种节约空间的算法。   本文运用Bloom Filter设计了一种节省空间的大规模数据表示和查找方式,应用到内容管理系统中,以应对海量信息采集中判重的需求,文中分析了布隆过滤器相对于HashMap的优越之处,同时指出布隆过滤器的使用条件和弱点,并针对本系统的自身特点和需求,提出了一种针对过滤器的改进方案并予以实现,运用到该系统中。   1 布隆过滤器   1.1 概念   布隆过滤器是一种空间和时间效率很高的随机访问型数据结构,它利用位数组表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter看似简洁,但这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,BloomFilter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省,同时摒弃了冲突导致的一系列冲突处理。   1.2 集合表示和元素查询   初始状态时,Bloom Filter是一个包含m位的位数组,每一位都置为0。   为了表达S={xl,x2,…,xn}这样一个n个元素的集合,Bloom Filter使用k个相互独立的哈希函数(Hash Function),它们分别将集合中的每个元素映射到{1,…,m}的范围中。对任意一个元素X,第i个哈希函数映射的位置hi (x)就会被置为1(1≤i≤k)。注意,如果一个位置多次被置为1,那么只有第一次会起作用,后面几次将没有任何效果。在图2中,k=3,且有两个哈希函数选中同一个位置(从左边数第五位)。   在判断v是否属于这个集合时,我们对v应用k次哈希函数,如果所有hi (y)的位置都是1(1≤i≤k),那么我们就认为y是集合中的元素,否则就认为y不是集合中的元素。图3中y1就不是集合中的元素。y2或者属于这个集合,或者刚好是一个false positive。   2 布隆过滤器在内容管理系统中的使用   内容管理系统由若干部分构成,其功能主要可以分为三大部分:来源、存储和展示。其中,布隆过滤器主要应用在来源部分中的去重。   作为内容管理系统,来源主要有两个方面:爬虫和手动上传。对于绝大多数的数据搜集,都是通过爬虫的自动化爬取获得的。因此,在不经过人为的干涉的情况下,如何能够有效地抓取不同的内容,防止重复内容对空间和时间的浪费,才是过滤过程的关键所在。因此,为了能让过滤器有的放矢,首先需要明确爬虫的工作机理。下面对爬虫的工作机制做一个简单的介绍。   2.1 爬虫工作流程   简单来说,爬虫可以归结为一个生产者和消费者的问题。   在爬取内容时经历了从“发现”到“爬取”的过程。“发现”,即为对目标链接的获取,目标来自于初始链接和内容中存在的链接。一旦发现目标链接之后,就要将其放入待爬取的队列中去,等待“爬取”功能的调用。那么,为了能够快速的判断哪些链接需要访问,哪些已经爬取过,最简单的办法就是,将已经访问过的链接(url)放入集合,在每次将新的链接放入队列之前,首先与集合中的历史信息相比对,若没有,则放入队列,

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档