Package org.apache.lucene.index

# Class SortedSetDocValues

java.lang.Object
org.apache.lucene.search.DocIdSetIterator
org.apache.lucene.index.SortedSetDocValues

Direct Known Subclasses:
  `FilterSortedSetDocValues`, `MultiDocValues.MultiSortedSetDocValues`

public abstract class SortedSetDocValues extends DocIdSetIterator
A multi-valued version of `SortedDocValues`.

Per-Document values in a SortedSetDocValues 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
Modifier
Constructor
Description
`protected`
`SortedSetDocValues()`
Sole constructor.

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`advanceExact(int target)`
Advance the iterator to exactly `target` and return whether `target` has a value.
`abstract int`
`docValueCount()`
Retrieves the number of unique ords for the current document.
`abstract long`
`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(long ord)`
Retrieves the value for the specified ordinal.
`long`
`lookupTerm(BytesRef key)`
If `key` exists, returns its ordinal, else returns `-insertionPoint-1`, like `Arrays.binarySearch`.
`abstract long`
`nextOrd()`
Returns the next ordinal for the current document.
`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 Details

### SortedSetDocValues

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

## Method Details

### nextOrd

public abstract long nextOrd() throws IOException
Returns the next ordinal for the current document. It is illegal to call this method after `advanceExact(int)` returned `false`. It is illegal to call this more than `docValueCount()` times for the currently-positioned doc.

Returns:
  next ordinal for the document. ordinals are dense, start at 0, then increment by 1 for the next value in sorted order.
Throws:
  `IOException`

### docValueCount

public abstract int docValueCount()
Retrieves the number of unique ords for the current document. This must always be greater than zero. It is illegal to call this method after `advanceExact(int)` returned `false`.

### lookupOrd

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

Parameters:
  `ord` - ordinal to lookup
Throws:
  `IOException`
See Also:
  - `nextOrd()`

### getValueCount

public abstract long 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 long 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`