2.2 性能分析。
分析上述算法,可以看出来,多维布隆过滤器实际上是由多组基本的布隆过滤器构成的。每个布隆过滤器都作为多维布隆过滤器的一部分,参加整体运算。
因此,这里可以得到每组两个位向量的误识别率为:
由公式可知,在 s,k,n 这些参数一致的情况下,多维布隆过滤器同标准布隆过滤器相比,具有较低的误判率,并且维数越高,误判率越低。
不同维度的过滤器在搜索去重中处于并行工作的状态,因此,基于此技术应用实现的多维布隆过滤器引擎查询时间和标准布隆过滤器引擎查询时间相等。
多维布隆过滤器引擎每一维都使用了 2 个标准的布隆过滤器引擎,参数一致的情况下,占用的存储空间是标准的布隆过滤器引擎的 2S 倍。
但是当维数过多时,要让每一个维度都处于并行工作状态对 CPU 要求较高,而且维数越多,对存储空间的需求也就越大。
3 应用与评价。
对于上面章节讨论的改进布隆过滤器算法-多维布隆过滤器算法的理论研究,我们仍需要进行大量的实验对其进行验证。本论文设计实现程序,从而模拟了两种算法,进而通过实验对两种算法的性能进行比较。
3.1 实验评价标准。
为了能够更加直观的对比试验结果,试验根据重复网页对搜索引擎的影响制定了以下三个主要的比较数据。他们是:
(1)运行速度:在一定抓取范围内,每种算法完成所用的时间。因为实际运用中网页数量过于庞大,因此这里设定一个固定时间,在这段时间内抓取到非重复 URL 的数量越多,则算法运行的速度越快。
速度=非重复 URL 数量/时间
(2)重复率:也就是在第二章提到的重要评价指标。
重复率=重复的 URL /抓取到的 URL 总数
(3)空间利用率:用于去重的位向量组所占空间。
用 Bit 为单位。
3.2 实验步骤。
本实验使用 Heritrix 作为爬虫,主要抓取一些时事新闻。因此,实验首先抓取几个常用的门户网站页面做基础。本论文中是先抓取的新浪,网易,腾讯,搜狐。之后在百度里搜索某个新闻关键词做为基础。
开始抓取搜索到的网页。之后分别使用三种不同的算法,在抓取范围相同的前提下,设定时间为 1 小时。
并且,为了实验数据更加准确,本实验为每种算法设置不同的可选参数来验证前面的结论,具体如下:
●布隆过滤器:hash 函数个数 k;向量空间大小 N
●多维布隆过滤器:每组 hash 函数个数 k;向量空间大小 N;向量维度 S
3.3 结果与分析。
对于实验结果,我们首先对比多维布隆过滤器中,在 k=4,N=150 时,不同向量维度 S 下的误识别率变化,如图 2 所示。
从图 4.5 中,我们可以得到结论,误识别率随着 S值的增加而减小。S 值增加往往意味着,多维布隆过滤器算法所需的空间大小也相应提高,所以,在实际中,我们一般取 S 的值小于 4.
随后,我们固定 S=4,k=4,对比标准布隆过滤器和多维布隆过滤器在位向量空间变化时的误识别率,如图 3 所示。
由上图可得,多维布隆过滤器和标准布隆过滤器的误识别率随着位向量空间的增加一直降低,而且多维布隆过滤器误识别率相比标准过滤器一直都要低。
最后,我们固定 S=4,N=150,对比标准布隆过滤器和多维布隆过滤器在hash函数数量k变化时的误识别率,如图 4 所示。
从图 4 中,我们可以得到结论,误识别率随着 k值的增加而减小。k 值增加往往意味着,hash 算法所需的运算时间也相应提高,所以,在实际中,我们一般取 k 的值小于 4.
综上,通过实验可以得到结论,hash 函数数量以及位向量空间大小都可以影响布隆过滤器和多维布隆过滤器的误识别率,向量的维度也可以影响多维布隆过滤器的误识别率。并且,在相同 hash 函数数量或向量空间大小时,多维布隆过滤器的误识别率均低于布隆过滤器。
4 结语。
本文详细阐述了布隆过滤器的原理,通过对原理、实现步骤进行分析,得出此算法在网页消重中的作用以及缺陷。此后,根据布隆过滤器存在的误识别率的缺点,本文提出了一种改进的布隆过滤器算法--多维布隆过滤器,降低了传统布隆过滤器算法的误识别率。实验结果表明:多维布隆过滤器的误识别率要显着低于传统的布隆过滤器算法,能够显着提高网页消重的性能。
参考文献
[1] Netcraft.November 2015 Web Server Survey [OL].[2015-11-16].
[2] 阮卫华。搜索引擎优化技术的研究与实现[J].软件,2014,35(7):72-77
[3] 郑晓健。面向领域主题的智能搜索引擎设计[J].软件,2014,35(3):4-5
[4] 郭世龙,王晨升。主题爬虫设计与实现[J].软件,2013,34(12):107-109
[5] Manber U.Finding similar files in a large file system[A].Proceedings of the USENIX winter 1994 technical conference[C].1994,1.