org.apache.lucene.index

## Class SortedDocValues

- java.lang.Object
- - org.apache.lucene.search.DocIdSetIterator
  - - org.apache.lucene.index.BinaryDocValues
    - - org.apache.lucene.index.SortedDocValues

Direct Known Subclasses:
  FilterSortedDocValues, MultiDocValues.MultiSortedDocValues

    public abstract class SortedDocValues
    extends BinaryDocValues

A per-document byte[] with presorted values. This is fundamentally an iterator over the int ord values per document, with random access APIs to resolve an int ord to BytesRef.

Per-Document values in a SortedDocValues are deduplicated, dereferenced, and sorted into a dictionary of unique values. A pointer to the dictionary value (ordinal) can be retrieved for each document. Ordinals are dense and in increasing sorted order.

### Field Summary

### Fields inherited from class org.apache.lucene.search.DocIdSetIterator

`NO_MORE_DOCS`

### Constructor Summary

Constructors
`protected` `SortedDocValues()` Sole constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract boolean` `advanceExact(int target)` Advance the iterator to exactly `target` and return whether `target` has a value.
`BytesRef` `binaryValue()` Returns the binary value for the current document ID.
`abstract int` `getValueCount()` Returns the number of unique values.
`TermsEnum` `intersect(CompiledAutomaton automaton)` Returns a `TermsEnum` over the values, filtered by a `CompiledAutomaton` The enum supports `TermsEnum.ord()`.
`abstract BytesRef` `lookupOrd(int ord)` Retrieves the value for the specified ordinal.
`int` `lookupTerm(BytesRef key)` If `key` exists, returns its ordinal, else returns `-insertionPoint-1`, like `Arrays.binarySearch`.
`abstract int` `ordValue()` Returns the ordinal for the current docID.
`TermsEnum` `termsEnum()` Returns a `TermsEnum` over the values.

### Methods inherited from class org.apache.lucene.search.DocIdSetIterator

`advance, all, cost, docID, empty, nextDoc, range, slowAdvance`

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

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

### Constructor Detail

#### SortedDocValues

    protected SortedDocValues()

Sole constructor. (For invocation by subclass constructors, typically implicit.)

### Method Detail

#### ordValue

    public abstract int ordValue()
                          throws IOException

Returns the ordinal for the current docID. It is illegal to call this method after `advanceExact(int)` returned `false`.

Returns:
  ordinal for the document: this is dense, starts at 0, then increments by 1 for the next value in sorted order.
Throws:
  `IOException`

#### lookupOrd

    public abstract BytesRef lookupOrd(int ord)
                                throws IOException

Retrieves the value for the specified ordinal. The returned `BytesRef` may be re-used across calls to `lookupOrd(int)` so make sure to `copy it` if you want to keep it around.

Parameters:
  `ord` - ordinal to lookup (must be >= 0 and < `getValueCount()`)
Throws:
  `IOException`
See Also:
  `ordValue()`

#### binaryValue

    public BytesRef binaryValue()
                         throws IOException

Description copied from class: `BinaryDocValues`
Returns the binary value for the current document ID. It is illegal to call this method after `advanceExact(int)` returned `false`.

Specified by:
  `binaryValue` in class `BinaryDocValues`
Returns:
  binary value
Throws:
  `IOException`

#### getValueCount

    public abstract int getValueCount()

Returns the number of unique values.

Returns:
  number of unique values in this SortedDocValues. This is also equivalent to one plus the maximum ordinal.

#### lookupTerm

    public int lookupTerm(BytesRef key)
                   throws IOException

If `key` exists, returns its ordinal, else returns `-insertionPoint-1`, like `Arrays.binarySearch`.

Parameters:
  `key` - Key to look up
Throws:
  `IOException`

#### termsEnum

    public TermsEnum termsEnum()
                        throws IOException

Returns a `TermsEnum` over the values. The enum supports `TermsEnum.ord()` and `TermsEnum.seekExact(long)`.

Throws:
  `IOException`

#### intersect

    public TermsEnum intersect(CompiledAutomaton automaton)
                        throws IOException

Returns a `TermsEnum` over the values, filtered by a `CompiledAutomaton` The enum supports `TermsEnum.ord()`.

Throws:
  `IOException`

#### advanceExact

    public abstract boolean advanceExact(int target)
                                  throws IOException

Advance the iterator to exactly `target` and return whether `target` has a value. `target` must be greater than or equal to the current `doc ID` and must be a valid doc ID, ie. ≥ 0 and < `maxDoc`. After this method returns, `DocIdSetIterator.docID()` returns `target`.

Throws:
  `IOException`