org.apache.lucene.search.suggest.document

## Class NRTSuggester

- java.lang.Object
- - org.apache.lucene.search.suggest.document.NRTSuggester

All Implemented Interfaces:
  Accountable

    public final class NRTSuggester
    extends Object
    implements Accountable

NRTSuggester executes Top N search on a weighted FST specified by a `CompletionScorer`

See `lookup(CompletionScorer, Bits, TopSuggestDocsCollector)` for more implementation details.

FST Format:

- Input: analyzed forms of input terms
- Output: Pair<Long, BytesRef> containing weight, surface form and docID

NOTE:

- having too many deletions or using a very restrictive filter can make the search inadmissible due to over-pruning of potential paths. See `CompletionScorer.accept(int, Bits)`
- when matched documents are arbitrarily filtered (`CompletionScorer.filtered` set to `true`, it is assumed that the filter will roughly filter out half the number of documents that match the provided automaton
- lookup performance will degrade as more accepted completions lead to filtered out documents

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

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Collection<Accountable>` `getChildResources()`
`static NRTSuggester` `load(IndexInput input, CompletionPostingsFormat.FSTLoadMode fstLoadMode)` Loads a `NRTSuggester` from `IndexInput` on or off-heap depending on the provided `fstLoadMode`
`void` `lookup(CompletionScorer scorer, Bits acceptDocs, TopSuggestDocsCollector collector)` Collects at most `TopSuggestDocsCollector.getCountToCollect()` completions that match the provided `CompletionScorer`.
`long` `ramBytesUsed()`

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

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

### Method Detail

#### ramBytesUsed

    public long ramBytesUsed()

Specified by:
  `ramBytesUsed` in interface `Accountable`

#### getChildResources

    public Collection<Accountable> getChildResources()

Specified by:
  `getChildResources` in interface `Accountable`

#### lookup

    public void lookup(CompletionScorer scorer,
                       Bits acceptDocs,
                       TopSuggestDocsCollector collector)
                throws IOException

Collects at most `TopSuggestDocsCollector.getCountToCollect()` completions that match the provided `CompletionScorer`.

The `CompletionScorer.automaton` is intersected with the `fst`. `CompletionScorer.weight` is used to compute boosts and/or extract context for each matched partial paths. A top N search is executed on `fst` seeded with the matched partial paths. Upon reaching a completed path, `CompletionScorer.accept(int, Bits)` and `CompletionScorer.score(float, float)` is used on the document id, index weight and query boost to filter and score the entry, before being collected via `TopSuggestDocsCollector.collect(int, CharSequence, CharSequence, float)`

Throws:
  `IOException`

#### load

    public static NRTSuggester load(IndexInput input,
                                    CompletionPostingsFormat.FSTLoadMode fstLoadMode)
                             throws IOException

Loads a `NRTSuggester` from `IndexInput` on or off-heap depending on the provided `fstLoadMode`

Throws:
  `IOException`