UNPKG

bloomit

Version:

Space efficient bloom filter based on the bloom-filters npm package.

55 lines (42 loc) 2 kB
# bloomit bloomit is a Space efficient bloom filter based on the [bloom-filters npm package](https://www.npmjs.com/package/bloom-filters). 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 Uint8Array - `inport(filterUint8Array: Uint8Array) -> BloomFilter`: Create a filter from a exporterd Uint8Array ```javascript const { BloomFilter } = require('bloomit'); // create a Bloom Filter with a size of 10 and 4 hash functions let filter = new BloomFilter(10, 4); // insert data filter.add('paul'); filter.add('kolja'); filter.add('carl'); // lookup for some data console.log(filter.has('paul')); // output: true console.log(filter.has('xiaomei')); // output: false // print the error rate console.log(filter.rate()); // alternatively, create a bloom filter optimal for a number of items and a desired error rate const items = ['paul', 'kolja', 'carl']; const errorRate = 0.04; // 4 % error rate filter = BloomFilter.create(items.length, errorRate); // or create a bloom filter optimal for a collections of items and a desired error rate filter = BloomFilter.from(items, errorRate); // Export the filter const exportedFilter = filter.export(); // Import the filter filter = BloomFilter.import(exportedFilter); ```