Package org.apache.lucene.codecs.bloom

# Class BloomFilteringPostingsFormat

java.lang.Object
org.apache.lucene.codecs.PostingsFormat
org.apache.lucene.codecs.bloom.BloomFilteringPostingsFormat

All Implemented Interfaces:
  `NamedSPILoader.NamedSPI`

public final class BloomFilteringPostingsFormat extends PostingsFormat
A `PostingsFormat` useful for low doc-frequency fields such as primary keys. Bloom filters are maintained in a ".blm" file which offers "fast-fail" for reads in segments known to have no record of the key. A choice of delegate PostingsFormat is used to record all other Postings data.

A choice of `BloomFilterFactory` can be passed to tailor Bloom Filter settings on a per-field basis. The default configuration is `DefaultBloomFilterFactory` which allocates a ~8mb bitset and hashes values using `MurmurHash64`. This should be suitable for most purposes.

The format of the blm file is as follows:

- BloomFilter (.blm) --> Header, DelegatePostingsFormatName, NumFilteredFields, FilterNumFilteredFields, Footer
- Filter --> FieldNumber, FuzzySet
- FuzzySet -->See `FuzzySet.serialize(DataOutput)`
- Header --> `IndexHeader`
- DelegatePostingsFormatName --> `String` The name of a ServiceProvider registered `PostingsFormat`
- NumFilteredFields --> `Uint32`
- FieldNumber --> `Uint32` The number of the field in this segment
- Footer --> `CodecFooter`

WARNING: This API is experimental and might change in incompatible ways in the next release.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`BLOOM_CODEC_NAME`
`static final int`
`VERSION_CURRENT`
`static final int`
`VERSION_START`

### Fields inherited from class org.apache.lucene.codecs.PostingsFormat

`EMPTY`

## Constructor Summary

Constructors
Constructor
Description
`BloomFilteringPostingsFormat()`
`BloomFilteringPostingsFormat(PostingsFormat delegatePostingsFormat)`
Creates Bloom filters for a selection of fields created in the index.
`BloomFilteringPostingsFormat(PostingsFormat delegatePostingsFormat, BloomFilterFactory bloomFilterFactory)`
Creates Bloom filters for a selection of fields created in the index.

## Method Summary

Modifier and Type
Method
Description
`FieldsConsumer`
`fieldsConsumer(SegmentWriteState state)`
`FieldsProducer`
`fieldsProducer(SegmentReadState state)`
`String`
`toString()`

### Methods inherited from class org.apache.lucene.codecs.PostingsFormat

`availablePostingsFormats, forName, getName, reloadPostingsFormats`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### BLOOM_CODEC_NAME

public static final String BLOOM_CODEC_NAME

See Also:
  - Constant Field Values

### VERSION_START

public static final int VERSION_START

See Also:
  - Constant Field Values

### VERSION_CURRENT

public static final int VERSION_CURRENT

See Also:
  - Constant Field Values

## Constructor Details

### BloomFilteringPostingsFormat

public BloomFilteringPostingsFormat(PostingsFormat delegatePostingsFormat, BloomFilterFactory bloomFilterFactory)
Creates Bloom filters for a selection of fields created in the index. This is recorded as a set of Bitsets held as a segment summary in an additional "blm" file. This PostingsFormat delegates to a choice of delegate PostingsFormat for encoding all other postings data.

Parameters:
  `delegatePostingsFormat` - The PostingsFormat that records all the non-bloom filter data i.e. postings info.
  `bloomFilterFactory` - The `BloomFilterFactory` responsible for sizing BloomFilters appropriately

### BloomFilteringPostingsFormat

public BloomFilteringPostingsFormat(PostingsFormat delegatePostingsFormat)
Creates Bloom filters for a selection of fields created in the index. This is recorded as a set of Bitsets held as a segment summary in an additional "blm" file. This PostingsFormat delegates to a choice of delegate PostingsFormat for encoding all other postings data. This choice of constructor defaults to the `DefaultBloomFilterFactory` for configuring per-field BloomFilters.

Parameters:
  `delegatePostingsFormat` - The PostingsFormat that records all the non-bloom filter data i.e. postings info.

### BloomFilteringPostingsFormat

public BloomFilteringPostingsFormat()

## Method Details

### fieldsConsumer

public FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException

Specified by:
  `fieldsConsumer` in class `PostingsFormat`
Throws:
  `IOException`

### fieldsProducer

public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException

Specified by:
  `fieldsProducer` in class `PostingsFormat`
Throws:
  `IOException`

### toString

public String toString()

Overrides:
  `toString` in class `PostingsFormat`