/** * Generate bloom filter, default hashing is {@code Murmur2} and false positive rate is 0.01. * @param nBytes size of bloom filter in bytes */ public static BloomFilter bySize(int nBytes) { return bySizeAndFPRate(nBytes, DEFAULT_FP_RATE); }
/** * Generate bloom filter, default hashing is {@code Murmur2}. * @param nBytes size of bloom filter in bytes * @param fpRate the probability that TServer will erroneously return a record that has not * ever been {@code put} into the {@code BloomFilter}. */ public static BloomFilter bySizeAndFPRate(int nBytes, double fpRate) { return bySizeAndFPRate(nBytes, fpRate, HashFunctions.MURMUR2); }
@Test public void testNumberOfHashes() { assertEquals(BloomFilter.byCountAndFPRate(10, 0.1).getNHashes(), 3); assertEquals(BloomFilter.byCountAndFPRate(100, 0.2).getNHashes(), 2); assertEquals(BloomFilter.byCountAndFPRate(1000, 0.05).getNHashes(), 4); assertEquals(BloomFilter.byCountAndFPRate(10000, 0.01).getNHashes(), 6); assertEquals(BloomFilter.bySizeAndFPRate(10, 0.1).getNHashes(), 3); assertEquals(BloomFilter.bySizeAndFPRate(1000, 0.2).getNHashes(), 2); assertEquals(BloomFilter.bySizeAndFPRate(100000, 0.05).getNHashes(), 4); assertEquals(BloomFilter.bySizeAndFPRate(10000000, 0.01).getNHashes(), 6); }