Web crawler Bloom过滤器如何帮助确定URL是否已经爬网?

Web crawler Bloom过滤器如何帮助确定URL是否已经爬网?,web-crawler,bloom-filter,Web Crawler,Bloom Filter,我一直听说Bloom过滤器在web爬网中是如何有用的,特别是在确定URL是否已经被爬网时(因为Bloom过滤器在测试集合成员资格时是内存有效的) 然而,在web爬行的用例中,如果遇到的URL数量几乎是无限的,那么位/桶的数量不是需要很大吗?特别是,如果你是谷歌或搜索引擎,每天都试图抓取数据 因此,我的问题是,当URL的数量不断增加,而存储桶的数量保持不变时,Bloom筛选器如何帮助确定URL是否已被爬网?Bloom筛选器基于哈希函数,该函数生成有限范围的值。无论遇到多少个URL,每个函数都将返回

我一直听说Bloom过滤器在web爬网中是如何有用的,特别是在确定URL是否已经被爬网时(因为Bloom过滤器在测试集合成员资格时是内存有效的)

然而,在web爬行的用例中,如果遇到的URL数量几乎是无限的,那么位/桶的数量不是需要很大吗?特别是,如果你是谷歌或搜索引擎,每天都试图抓取数据


因此,我的问题是,当URL的数量不断增加,而存储桶的数量保持不变时,Bloom筛选器如何帮助确定URL是否已被爬网?

Bloom筛选器基于哈希函数,该函数生成有限范围的值。无论遇到多少个URL,每个函数都将返回其范围内的一个值。使用多个哈希函数来选择位可以降低误报的可能性,但这始终是一种可能性。然而,它的概率很小,并且是精确性和效率之间经过计算的权衡


URL的长度有实际限制,请参阅。当然,这是一个惊人的数字。当创建更多URL时,可能需要升级散列函数和bucket大小,但是今天可用的那些函数和bucket大小能够以可接受的小错误率处理今天可用的URL

Bloom过滤器基于哈希函数,该函数生成有限范围的值。无论遇到多少个URL,每个函数都将返回其范围内的一个值。使用多个哈希函数来选择位可以降低误报的可能性,但这始终是一种可能性。然而,它的概率很小,并且是精确性和效率之间经过计算的权衡


URL的长度有实际限制,请参阅。当然,这是一个惊人的数字。当创建更多URL时,可能需要升级散列函数和bucket大小,但是今天可用的那些函数和bucket大小能够以可接受的小错误率处理今天可用的URL

对于这个用例,除非有大量的bucket,否则您将被很大比例的误报所困扰(几乎不可能完全消除误报,即使对于一个小应用程序也是如此)


一个有趣的解决方法是使用多级bloom过滤器,而不是扁平结构,例如,第一级仅基于域名(如cnn.com),下一级可能包含扩展URL(如cnn.com/sports/athletics)。但是当涉及到字符串操作和多个散列函数时,不确定它的性能如何。

对于这个用例,除非有大量的bucket,否则您将被很大比例的误报所困扰(即使是一个小应用程序,也几乎不可能完全消除误报)

一个有趣的解决方法是使用多级bloom过滤器,而不是扁平结构,例如,第一级仅基于域名(如cnn.com),下一级可能包含扩展URL(如cnn.com/sports/athletics)。但是当涉及到字符串操作和多个散列函数时,不确定这将执行得如何