blob: 316c3ad838bed6696753db94afe76ce95d333486 [file] [log] [blame]
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
package org.rocksdb;
/**
* Bloom filter policy that uses a bloom filter with approximately
* the specified number of bits per key.
*
* <p>
* Note: if you are using a custom comparator that ignores some parts
* of the keys being compared, you must not use this {@code BloomFilter}
* and must provide your own FilterPolicy that also ignores the
* corresponding parts of the keys. For example, if the comparator
* ignores trailing spaces, it would be incorrect to use a
* FilterPolicy (like {@code BloomFilter}) that does not ignore
* trailing spaces in keys.</p>
*/
public class BloomFilter extends Filter {
private static final int DEFAULT_BITS_PER_KEY = 10;
private static final boolean DEFAULT_MODE = true;
/**
* BloomFilter constructor
*
* <p>
* Callers must delete the result after any database that is using the
* result has been closed.</p>
*/
public BloomFilter() {
this(DEFAULT_BITS_PER_KEY, DEFAULT_MODE);
}
/**
* BloomFilter constructor
*
* <p>
* bits_per_key: bits per key in bloom filter. A good value for bits_per_key
* is 10, which yields a filter with ~ 1% false positive rate.
* </p>
* <p>
* Callers must delete the result after any database that is using the
* result has been closed.</p>
*
* @param bitsPerKey number of bits to use
*/
public BloomFilter(final int bitsPerKey) {
this(bitsPerKey, DEFAULT_MODE);
}
/**
* BloomFilter constructor
*
* <p>
* bits_per_key: bits per key in bloom filter. A good value for bits_per_key
* is 10, which yields a filter with ~ 1% false positive rate.
* <p><strong>default bits_per_key</strong>: 10</p>
*
* <p>use_block_based_builder: use block based filter rather than full filter.
* If you want to builder full filter, it needs to be set to false.
* </p>
* <p><strong>default mode: block based filter</strong></p>
* <p>
* Callers must delete the result after any database that is using the
* result has been closed.</p>
*
* @param bitsPerKey number of bits to use
* @param useBlockBasedMode use block based mode or full filter mode
*/
public BloomFilter(final int bitsPerKey, final boolean useBlockBasedMode) {
super(createNewBloomFilter(bitsPerKey, useBlockBasedMode));
}
private native static long createNewBloomFilter(final int bitsKeyKey,
final boolean useBlockBasedMode);
}