Nothing's plumb meaningless

    bloomit
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.1 • Public • Published

    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 Uint8Array
    • inport(filterUint8Array: Uint8Array) -> BloomFilter: Create a filter from a exporterd Uint8Array
    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);

    Install

    npm i bloomit

    DownloadsWeekly Downloads

    402

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    58.6 kB

    Total Files

    24

    Last publish

    Collaborators

    • kblauhut