Package org.apache.lucene.index

# Class MultiTerms

java.lang.Object
org.apache.lucene.index.Terms
org.apache.lucene.index.MultiTerms

public final class MultiTerms extends Terms
Exposes flex API, merged from flex API of sub-segments.

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

## Field Summary

### Fields inherited from class org.apache.lucene.index.Terms

`EMPTY_ARRAY`

## Constructor Summary

Constructors
Constructor
Description
`MultiTerms(Terms[] subs, ReaderSlice[] subSlices)`
Sole constructor.

## Method Summary

Modifier and Type
Method
Description
`int`
`getDocCount()`
Returns the number of documents that have at least one term for this field.
`BytesRef`
`getMax()`
Returns the largest term (in lexicographic order) in the field.
`BytesRef`
`getMin()`
Returns the smallest term (in lexicographic order) in the field.
`ReaderSlice[]`
`getSubSlices()`
Expert: returns pointers to the sub-readers corresponding to the Terms being merged.
`Terms[]`
`getSubTerms()`
Expert: returns the Terms being merged.
`long`
`getSumDocFreq()`
Returns the sum of `TermsEnum.docFreq()` for all terms in this field.
`long`
`getSumTotalTermFreq()`
Returns the sum of `TermsEnum.totalTermFreq()` for all terms in this field.
`static PostingsEnum`
`getTermPostingsEnum(IndexReader r, String field, BytesRef term)`
Returns `PostingsEnum` for the specified field and term.
`static PostingsEnum`
`getTermPostingsEnum(IndexReader r, String field, BytesRef term, int flags)`
Returns `PostingsEnum` for the specified field and term, with control over whether freqs, positions, offsets or payloads are required.
`static Terms`
`getTerms(IndexReader r, String field)`
This method may return null if the field does not exist or if it has no terms.
`boolean`
`hasFreqs()`
Returns true if documents in this field store per-document term frequency (`PostingsEnum.freq()`).
`boolean`
`hasOffsets()`
Returns true if documents in this field store offsets.
`boolean`
`hasPayloads()`
Returns true if documents in this field store payloads.
`boolean`
`hasPositions()`
Returns true if documents in this field store positions.
`TermsEnum`
`intersect(CompiledAutomaton compiled, BytesRef startTerm)`
Returns a TermsEnum that iterates over all terms and documents that are accepted by the provided `CompiledAutomaton`.
`TermsEnum`
`iterator()`
Returns an iterator that will step through all terms.
`long`
`size()`
Returns the number of terms for this field, or -1 if this measure isn't stored by the codec.

### Methods inherited from class org.apache.lucene.index.Terms

`getStats, getTerms`

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

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

## Constructor Details

### MultiTerms

public MultiTerms(Terms[] subs, ReaderSlice[] subSlices) throws IOException
Sole constructor. Use `getTerms(IndexReader, String)` instead if possible.

Parameters:
  `subs` - The `Terms` instances of all sub-readers.
  `subSlices` - A parallel array (matching `subs`) describing the sub-reader slices.
Throws:
  `IOException`
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Method Details

### getTerms

public static Terms getTerms(IndexReader r, String field) throws IOException
This method may return null if the field does not exist or if it has no terms.

Throws:
  `IOException`

### getTermPostingsEnum

public static PostingsEnum getTermPostingsEnum(IndexReader r, String field, BytesRef term) throws IOException
Returns `PostingsEnum` for the specified field and term. This will return null if the field or term does not exist or positions were not indexed.

Throws:
  `IOException`
See Also:
  - `getTermPostingsEnum(IndexReader, String, BytesRef, int)`

### getTermPostingsEnum

public static PostingsEnum getTermPostingsEnum(IndexReader r, String field, BytesRef term, int flags) throws IOException
Returns `PostingsEnum` for the specified field and term, with control over whether freqs, positions, offsets or payloads are required. Some codecs may be able to optimize their implementation when offsets and/or payloads are not required. This will return null if the field or term does not exist. See `TermsEnum.postings(PostingsEnum,int)`.

Throws:
  `IOException`

### getSubTerms

public Terms[] getSubTerms()
Expert: returns the Terms being merged.

### getSubSlices

public ReaderSlice[] getSubSlices()
Expert: returns pointers to the sub-readers corresponding to the Terms being merged.

### intersect

public TermsEnum intersect(CompiledAutomaton compiled, BytesRef startTerm) throws IOException
Description copied from class: `Terms`
Returns a TermsEnum that iterates over all terms and documents that are accepted by the provided `CompiledAutomaton`. If the `startTerm` is provided then the returned enum will only return terms `> startTerm`, but you still must call next() first to get to the first term. Note that the provided `startTerm` must be accepted by the automaton.

This is an expert low-level API and will only work for `NORMAL` compiled automata. To handle any compiled automata you should instead use `CompiledAutomaton.getTermsEnum(org.apache.lucene.index.Terms)` instead.

NOTE: the returned TermsEnum cannot seek.

Overrides:
  `intersect` in class `Terms`
Throws:
  `IOException`

### getMin

public BytesRef getMin() throws IOException
Description copied from class: `Terms`
Returns the smallest term (in lexicographic order) in the field. Note that, just like other term measures, this measure does not take deleted documents into account. This returns null when there are no terms.

Overrides:
  `getMin` in class `Terms`
Throws:
  `IOException`

### getMax

public BytesRef getMax() throws IOException
Description copied from class: `Terms`
Returns the largest term (in lexicographic order) in the field. Note that, just like other term measures, this measure does not take deleted documents into account. This returns null when there are no terms.

Overrides:
  `getMax` in class `Terms`
Throws:
  `IOException`

### iterator

public TermsEnum iterator() throws IOException
Description copied from class: `Terms`
Returns an iterator that will step through all terms. This method will not return null.

Specified by:
  `iterator` in class `Terms`
Throws:
  `IOException`

### size

public long size()
Description copied from class: `Terms`
Returns the number of terms for this field, or -1 if this measure isn't stored by the codec. Note that, just like other term measures, this measure does not take deleted documents into account.

Specified by:
  `size` in class `Terms`

### getSumTotalTermFreq

public long getSumTotalTermFreq() throws IOException
Description copied from class: `Terms`
Returns the sum of `TermsEnum.totalTermFreq()` for all terms in this field. Note that, just like other term measures, this measure does not take deleted documents into account.

Specified by:
  `getSumTotalTermFreq` in class `Terms`
Throws:
  `IOException`

### getSumDocFreq

public long getSumDocFreq() throws IOException
Description copied from class: `Terms`
Returns the sum of `TermsEnum.docFreq()` for all terms in this field. Note that, just like other term measures, this measure does not take deleted documents into account.

Specified by:
  `getSumDocFreq` in class `Terms`
Throws:
  `IOException`

### getDocCount

public int getDocCount() throws IOException
Description copied from class: `Terms`
Returns the number of documents that have at least one term for this field. Note that, just like other term measures, this measure does not take deleted documents into account.

Specified by:
  `getDocCount` in class `Terms`
Throws:
  `IOException`

### hasFreqs

public boolean hasFreqs()
Description copied from class: `Terms`
Returns true if documents in this field store per-document term frequency (`PostingsEnum.freq()`).

Specified by:
  `hasFreqs` in class `Terms`

### hasOffsets

public boolean hasOffsets()
Description copied from class: `Terms`
Returns true if documents in this field store offsets.

Specified by:
  `hasOffsets` in class `Terms`

### hasPositions

public boolean hasPositions()
Description copied from class: `Terms`
Returns true if documents in this field store positions.

Specified by:
  `hasPositions` in class `Terms`

### hasPayloads

public boolean hasPayloads()
Description copied from class: `Terms`
Returns true if documents in this field store payloads.

Specified by:
  `hasPayloads` in class `Terms`