Liking cljdoc? Tell your friends :D



A simple Bloom filter


(require '[blossom.core :as blossom])

(let [bf (blossom/make-filter {})]
  (blossom/add bf "a")
  (blossom/add bf "abc")

  (prn (blossom/hit? bf "a"))    ;; -> true
  (prn (blossom/hit? bf "bc"))   ;; -> false
  (prn (blossom/hit? bf "abc"))) ;; -> true
  • make-filter makes a Bloom filter with the following paramters
    (blossom/make-filter {:hash-size "SHA-1"
                          :size 512
                          :num-hashes 2})
    • hash-algo: You can specify an algorithm for the hash function. "MD2", "MD5", "SHA-1", "SHA-224", "SHA-256", "SHA-384" or "SHA-512" can be set. By default, "SHA-256" will be set.
    • size: Bloom filter's size in bits. By default, the size will be 1024 bits.
    • num-hashes: This specifies the number of bits set to the filter when an item is added. By default, this will be 3.
    • thread-safe?: If this is true, a thread-safe filter is made. The performance of the filter will be lower than that of a filter with {:thread-safe false}. BY default, it will be false.

Can you improve this documentation? These fine people already did:
yito88 & Yuji Ito
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close