I've used this trick at scale on network gear and it works great.
Could you give a summary? The paper is quite mathematical and seems to lack a clear description of how to actually use the two hashes without reading in depth.
Even fast hash functions like Murmur add overhead, though, and the lower the desired false positive rate, the more hash functions you need (x hash functions for 2^-x false positive rate).
The conclusion of the paper is roughly that you can create new hash functions by recombining the outputs of two initial hash functions without compromising the statistical integrity of the filter, and this makes querying the filter a lot faster.
To be clear, even the two initial hash functions can be halves or quarters of a single hash function with an output larger than the filter needs, e.g. a filter that needs 64-bit hashes can run entirely on Murmur-128 using its bottom and top halves as the two hash functions.
Fleur (and DCSO/bloom and DCSO/flor): fnv
bloomd: a combination of SpookyHash and murmur[2]
[1]: https://llimllib.github.io/bloomfilter-tutorial/ (I'll update it to add bloomd and spooky)
[2]: https://github.com/armon/bloomd/blob/23c19a7f5cbb35d7c3d970b...
[3]: I have a vague recollection of somebody telling me why combining two hashes in the way bloomd does for k >= 4 is a good idea but I can't remember - anybody have a good reference for me to link to? (edit: nvm, I already link the paper on my page! sheesh)