gmcabrita/bloomex

:hibiscus: A pure Elixir implementation of Scalable Bloom Filters

Elixir

111

132 commits

updated Jun 8, 2021

See the code

README

Bloomex

Build Status Coverage Status Hex docs Hex Version License

Bloomex is a pure Elixir implementation of Scalable Bloom Filters.

Usage

Add Bloomex as a dependency in your mix.exs file.

def deps do
  [{:bloomex, "~> 1.0"}]
end

When you are done, run mix deps.get in your shell to fetch and compile Bloomex.

Examples

iex> bf = Bloomex.scalable(1000, 0.1, 0.1, 2)
%Bloomex.ScalableBloom...

iex> bf = Bloomex.add(bf, 5)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 5)
true

iex> bf = Bloomex.add(bf, 100)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 100)
true

iex> Bloomex.member?(bf, 105)
false

You can also pass in a hashing function to be used by the Bloom filter when creating one.

(assuming we have Murmur installed as a dependency)

iex> bf = Bloomex.scalable(1000, 0.1, 0.1, 2, &Murmur.hash_x86_128/1))
%Bloomex.ScalableBloom...

iex> bf = Bloomex.add(bf, 5)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 5)
true

iex> bf = Bloomex.add(bf, 100)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 100)
true
bloom-filter
data-structures
elixir
hex
probabilistic-data-structures
scalable-bloom-filters

Contributors

gmcabrita/bloomex

:hibiscus: A pure Elixir implementation of Scalable Bloom Filters

Elixir

111

132 commits

updated Jun 8, 2021

See the code

README

Bloomex

Build Status Coverage Status Hex docs Hex Version License

Bloomex is a pure Elixir implementation of Scalable Bloom Filters.

Usage

Add Bloomex as a dependency in your mix.exs file.

def deps do
  [{:bloomex, "~> 1.0"}]
end

When you are done, run mix deps.get in your shell to fetch and compile Bloomex.

Examples

iex> bf = Bloomex.scalable(1000, 0.1, 0.1, 2)
%Bloomex.ScalableBloom...

iex> bf = Bloomex.add(bf, 5)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 5)
true

iex> bf = Bloomex.add(bf, 100)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 100)
true

iex> Bloomex.member?(bf, 105)
false

You can also pass in a hashing function to be used by the Bloom filter when creating one.

(assuming we have Murmur installed as a dependency)

iex> bf = Bloomex.scalable(1000, 0.1, 0.1, 2, &Murmur.hash_x86_128/1))
%Bloomex.ScalableBloom...

iex> bf = Bloomex.add(bf, 5)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 5)
true

iex> bf = Bloomex.add(bf, 100)
%Bloomex.ScalableBloom...

iex> Bloomex.member?(bf, 100)
true
bloom-filter
data-structures
elixir
hex
probabilistic-data-structures
scalable-bloom-filters

Contributors

Languages

Elixir

100.0%