Bloom Filter
This JavaScript bloom filter implementation uses the non-cryptographic
Fowler–Noll–Vo hash function for speed.
Usage
var bloom = new BloomFilter(
32 * 256,
16
);
bloom.add("foo");
bloom.add("bar");
bloom.test("foo");
bloom.test("bar");
bloom.test("blah");
var array = [].slice.call(bloom.buckets),
json = JSON.stringify(array);
var bloom = new BloomFilter(array, 16);
Implementation
Although the bloom filter requires k hash functions, we can simulate this
using only three hash functions. In fact, we get the second and third hash
functions almost for free by iterating once more on the first hash using the
FNV hash algorithm, and another time to get the third.
Thanks to Will Fitzgerald for his help and inspiration with the hashing
optimisation.