An open API service providing package, version and dependency metadata of many open source software ecosystems and registries.

github.com/willf/bloom

Package bloom provides data structures and methods for creating Bloom filters. A Bloom filter is a representation of a set of _n_ items, where the main requirement is to make membership queries; _i.e._, whether an item is a member of a set. A Bloom filter has two parameters: _m_, a maximum size (typically a reasonably large multiple of the cardinality of the set to represent) and _k_, the number of hashing functions on elements of the set. (The actual hashing functions are important, too, but this is not a parameter for this implementation). A Bloom filter is backed by a BitSet; a key is represented in the filter by setting the bits at each value of the hashing functions (modulo _m_). Set membership is done by _testing_ whether the bits at each value of the hashing functions (again, modulo _m_) are set. If so, the item is in the set. If the item is actually in the set, a Bloom filter will never fail (the true positive rate is 1.0); but it is susceptible to false positives. The art is to choose _k_ and _m_ correctly. In this implementation, the hashing functions used is murmurhash, a non-cryptographic hashing function. This implementation accepts keys for setting as testing as []byte. Thus, to add a string item, "Love": Similarly, to test if "Love" is in bloom: For numeric data, I recommend that you look into the binary/encoding library. But, for example, to add a uint32 to the filter: Finally, there is a method to estimate the false positive rate of a particular Bloom filter for a set of size _n_: Given the particular hashing scheme, it's best to be empirical about this. Note that estimating the FP rate will clear the Bloom filter.

Ecosystem
proxy.golang.org
Latest Release
v2.0.3+incompatible
almost 9 years ago
Versions
5
Dependent Packages
224
Dependent Repos
486
Links
Registry proxy.golang.org
Source Repository
Docs Documentation
JSON API View JSON
CodeMeta codemeta.json
Package Details
PURL pkg:golang/github.com/willf/bloom
spec
License BSD-2-Clause
Namespace github.com/willf
First Release about 12 years ago
Last Synced about 18 hours ago
Repository
Stars 1,841 on GitHub
Forks 215 on GitHub
Docker Dependents 121
Docker Downloads 3,602,411,309
Rankings on proxy.golang.org
Overall Top 0.8%
Dependent packages Top 0.3%
Dependent repos Top 0.3%
Forks Top 1.9%
Docker downloads Top 0.1%