使用Guava库创建Bloom过滤器时,需要提供一个漏斗和一个预期的插入次数(以及所需的误报率)。有没有办法设置Bloom过滤器应该使用的哈希函数?如果没有办法设置哈希函数,默认情况下使用什么?Bloom过滤器是com.google.common.hash的一部分,它提供了各种不同的哈希函数。不幸的是https://github.com/google/guava/wiki/HashingExplained无法回答我的问题,但是显示了可用的哈希函数并给出了一些解释。
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
默认的哈希函数是128位murmur3哈希函数(x64变体)(请参阅BloomFilterStrategies枚举)。
您不能使用公共API指定哈希函数。但是,使用一点技巧就可以做到-您需要:
将自定义类放在
com.google.common.hash
包中以调用BloomFilter。create( Funnel<? super T> funnel, long expectedInsertions, double fpp, Strategy strategy)
创建的自定义实现
BloomFilter.Strategy
(最简单的方法是从复制一个实现BloomFilterStrategies
,并将hash函数转换为字段)。
但是,请确保您确实需要自定义功能。Murmur3确实非常快(尽管并不安全),并且其他所有哈希函数都可能会慢得多,因此,您可能希望的唯一好处就是减少冲突。
添加回答
举报
0/150
提交
取消