Skip to content

Bidirectional serialization of Bloom filters #3

ocharles opened this Issue Feb 24, 2013 · 3 comments

4 participants


I'd like to use bloomfilter in order to let clients filter a large set on the server, while making efficient use of bandwidth. As such, clients will construct a Bloom filter themselves, transmit it over the network, and the server will use this Bloom filter against a local set it maintains. The result will then be transmitted over the network back to the client.

While I can get access to the underlying representation of a filter, I do not appear to be able to recreate the filter from it.

kim commented Apr 30, 2014

This is actually possible, though not too obvious from just looking at the API:

let (bits,nh) = suggestSizing 3 0.1
     hfam     = cheapHashes nh
     filt     = fromList hfam bits ["foo", "bar", "quux"]
     arr      = bitArray filt -- warnings about endianness and word size apply
     filt'    = empty hfam bits -- must use the same parameters when re-creating the filter
 in filt' { bitArray = arr } 

(note: the hackage version exposes a slightly different API)

bgamari commented May 27, 2014

Can this be closed?


It would be nice to get official support for this in the API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.