Source

ebloom / README.org

* ebloom
** Overview
=ebloom= is a NIF wrapper around a basic bloom filter.

** Quick Start
   You must have [[http://erlang.org/download.html][Erlang/OTP R13B04]] or later and a GNU-style build
   system to compile and run =ebloom=.

#+BEGIN_SRC shell
git clone git://github.com/basho/ebloom.git
cd ebloom
make
#+END_SRC

   Start up an Erlang shell with the path to =ebloom= included.

#+BEGIN_SRC shell
erl -pa path/to/ebloom/ebin
#+END_SRC

   Create a new bloom filter, insert elements, and test for an
   elements presence.

#+BEGIN_SRC erlang
1> PredictedElementCount=5.
5
2> FalsePositiveProbability=0.01.

3> RandomSeed=123.
123
4> {ok, Ref} = ebloom:new(PredictedElementCount, FalsePositiveProbability, RandomSeed).
{ok,<<>>}
5> ebloom:insert(Ref, <<"abcdef">>).
ok
6> true = ebloom:contains(Ref, <<"abcdef">>).
true
7> false = ebloom:contains(Ref, <<"zzzzzz">>).
false
#+END_SRC

** Contributing
   We encourage contributions to =ebloom= from the community.

   1) Fork the =ebloom= repository on [[https://github.com/basho/ebloom][Github]].
   2) Clone your fork or add the remote if you already have a clone of
      the repository.
#+BEGIN_SRC shell
git clone git@github.com:yourusername/ebloom.git
# or
git remote add mine git@github.com:yourusername/ebloom.git
#+END_SRC
   3) Create a topic branch for your change.
#+BEGIN_SRC shell
git checkout -b some-topic-branch
#+END_SRC
   4) Make your change and commit. Use a clear and descriptive commit
      message, spanning multiple lines if detailed explanation is
      needed.
   5) Push to your fork of the repository and then send a pull-request
      through Github.
#+BEGIN_SRC shell
git push mine some-topic-branch
#+END_SRC
   6) A Basho engineer or community maintainer will review your patch
      and merge it into the main repository or send you feedback.