README.md

# ![gloom](https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/44.png)Gloomex

<b>G</b>uava like b<b>loom</b> filter library for <b>e</b>li<b>x</b>ir.

Supports murmur_x64_128.

It has the same false-positives as present in the bloom filter from the Guava library.

## Installation

```elixir
def deps do
  [
    {:gloomex, "~> 0.1.0"}
  ]
end
```

## Usage

```elixir
file = "top_passwords.txt"
false_positive_ratio = 0.01
# creates bloom filter from file
bloom_filter = Gloomex.plain_from_file(file, false_positive_ratio)
# returns true if present or false positive
Gloomex.might_contain?(bloom_filter, "123456789")
```

You can also create the bloom filter manually
```elixir
file = "top_passwords.txt"

expected_insertions = file
|> File.stream!()
|> Enum.count()

false_positive_ratio = 0.01

# creates bloom filter from file
bloom_filter = Gloomex.plain(expected_insertions, false_positive_ratio)

file
|> File.stream!()
|> Enum.each(fn word ->
  Gloomex.put!(bloom_filter, String.trim(word))
end)

# returns true if present or false positive
Gloomex.might_contain?(bloom_filter, "123456789")
```