bloomfilter
bloomfilter copied to clipboard
Bidirectional serialization of Bloom filters
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.
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)
Can this be closed?
It would be nice to get official support for this in the API.