A Bloom filter is a space-efficient probabilistic data structure Wiki
Add this line to your application's Gemfile:
gem 'qbloom_filter'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install qbloom_filter
After installation the instance can be created. And two parameters can be used to describe the bloom filter:
- first - number of items that are be inserted(default: 100)
- second - False Positive probability(default: 0.01)
bloom_filter = BloomFilter::Filter.new(1000, 0.001)
add(value) - add item into filter
includes?(value) - check if filter includes the value
contains?(value) - alias of includes?(value)
count - returns number of inserted items
capacity - returns initial capacity
probability - returns initial probability
bit_size - returns number of bits in the bit array
get_bit(position) - returns value of a bit(true/false) in the bit array, rises an error if position is out of range of the bit array
set_bit(position) - set a bit to TRUE in the bit array, rises an error if position is out of range of the bit array
clear_bit(position) - set a bit to FALSE in the bit array, rises an error if position is out of range of the bit array
union_with(bloom_filter) - unions current bloom filter with another one, bloom filters should be the instances of this module and have the same initial params(capacity, probability)
intersect_with(bloom_filter) - intersects current bloom filter with another one, bloom filters should be the instances of this module and have the same initial params(capacity, probability)
Bug reports and pull requests are welcome on GitHub at https://github.com/superedriver/qbloom_filter