org.apache.lucene.codecs.idversion

## Class IDVersionPostingsFormat

- java.lang.Object
- - org.apache.lucene.codecs.PostingsFormat
  - - org.apache.lucene.codecs.idversion.IDVersionPostingsFormat

All Implemented Interfaces:
  NamedSPILoader.NamedSPI

    public class IDVersionPostingsFormat
    extends PostingsFormat

A PostingsFormat optimized for primary-key (ID) fields that also record a version (long) for each ID, delivered as a payload created by `longToBytes(long, org.apache.lucene.util.BytesRef)` during indexing. At search time, the TermsEnum implementation `IDVersionSegmentTermsEnum` enables fast (using only the terms index when possible) lookup for whether a given ID was previously indexed with version > N (see `IDVersionSegmentTermsEnum.seekExact(BytesRef,long)`.

This is most effective if the app assigns monotonically increasing global version to each indexed doc. Then, during indexing, use `IDVersionSegmentTermsEnum.seekExact(BytesRef,long)` (along with `LiveFieldValues`) to decide whether the document you are about to index was already indexed with a higher version, and skip it if so.

The field is effectively indexed as DOCS_ONLY and the docID is pulsed into the terms dictionary, but the user must feed in the version as a payload on the first token.

NOTE: term vectors cannot be indexed with this field (not that you should really ever want to do this).

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

### Field Summary

Fields
`static long` `MAX_VERSION` version must be <= this, because we encode with ZigZag.
`static long` `MIN_VERSION` version must be >= this.

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

`EMPTY`

### Constructor Summary

Constructors
Constructor and Description
`IDVersionPostingsFormat()`
`IDVersionPostingsFormat(int minTermsInBlock, int maxTermsInBlock)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static long` `bytesToLong(BytesRef bytes)`
`FieldsConsumer` `fieldsConsumer(SegmentWriteState state)`
`FieldsProducer` `fieldsProducer(SegmentReadState state)`
`static void` `longToBytes(long v, BytesRef bytes)`

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

`availablePostingsFormats, forName, getName, reloadPostingsFormats, toString`

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

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

### Field Detail

#### MIN_VERSION

    public static final long MIN_VERSION

version must be >= this.

See Also:
  Constant Field Values

#### MAX_VERSION

    public static final long MAX_VERSION

version must be <= this, because we encode with ZigZag.

See Also:
  Constant Field Values

### Constructor Detail

#### IDVersionPostingsFormat

    public IDVersionPostingsFormat()

#### IDVersionPostingsFormat

    public IDVersionPostingsFormat(int minTermsInBlock,
                                   int maxTermsInBlock)

### Method Detail

#### 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`

#### bytesToLong

    public static long bytesToLong(BytesRef bytes)

#### longToBytes

    public static void longToBytes(long v,
                                   BytesRef bytes)