Package org.apache.lucene.sandbox.codecs.idversion

# Class IDVersionPostingsFormat

java.lang.Object
org.apache.lucene.codecs.PostingsFormat
org.apache.lucene.sandbox.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
  Modifier and Type
  Field
  Description
  `static final long`
  `MAX_VERSION`
  version must be <= this, because we encode with ZigZag.
  `static final long`
  `MIN_VERSION`
  version must be >= this.

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

  `EMPTY`

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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 Details

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

  - ### IDVersionPostingsFormat

    public IDVersionPostingsFormat()

  - ### IDVersionPostingsFormat

    public IDVersionPostingsFormat(int minTermsInBlock, int maxTermsInBlock)

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

  - ### bytesToLong

    public static long bytesToLong(BytesRef bytes)

  - ### longToBytes

    public static void longToBytes(long v, BytesRef bytes)