Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Bidirectional serialization of Bloom filters #3

Open
ocharles opened this Issue · 2 comments

3 participants

@ocharles

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

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

Can this be closed?

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.