bloomit
bloomit is a Space efficient bloom filter based on the
bloom-filters npm package.
The main motivation for this package was to reduce the memory usage of the bloom
filter by using a bitmap instead of an array of javascript numbers. This should
result in a theoretical memory reduction by a factor of 64.
I have also edited the export to use a Uint8Array which encodes all needed
values and can be used to send it over the web efficiently.
Methods
add(element: string) -> void
: add an element into the filter.has(element: string) -> boolean
: Test an element for membership, returning
False if the element is definitively not in the filter and True is the element
might be in the filter.equals(other: BloomFilter) -> boolean
: Test if two filters are equals.rate() -> number
: compute the filter's false positive rate (or error rate).export() -> Uint8Array
: export the filter as an Uint8Arrayinport(filterUint8Array: Uint8Array) -> BloomFilter
: Create a filter from a
exporterd Uint8Array
const { BloomFilter } = require('bloomit');
let filter = new BloomFilter(10, 4);
filter.add('paul');
filter.add('kolja');
filter.add('carl');
console.log(filter.has('paul'));
console.log(filter.has('xiaomei'));
console.log(filter.rate());
const items = ['paul', 'kolja', 'carl'];
const errorRate = 0.04;
filter = BloomFilter.create(items.length, errorRate);
filter = BloomFilter.from(items, errorRate);
const exportedFilter = filter.export();
filter = BloomFilter.import(exportedFilter);