org.apache.lucene.search.suggest.document

## Class ContextSuggestField

- java.lang.Object
- - org.apache.lucene.document.Field
  - - org.apache.lucene.search.suggest.document.SuggestField
    - - org.apache.lucene.search.suggest.document.ContextSuggestField

All Implemented Interfaces:
  IndexableField

    public class ContextSuggestField
    extends SuggestField

`SuggestField` which additionally takes in a set of contexts. Example usage of adding a suggestion with contexts is as follows:

      document.add(
       new ContextSuggestField(name, "suggestion", Arrays.asList("context1", "context2"),  4));

Use `ContextQuery` to boost and/or filter suggestions at query-time. Use `PrefixCompletionQuery`, `RegexCompletionQuery` or `FuzzyCompletionQuery` if context boost/filtering are not needed.

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

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.lucene.document.Field

`Field.Store`

### Field Summary

Fields
`static int` `CONTEXT_SEPARATOR` Separator used between context value and the suggest field value

### Fields inherited from class org.apache.lucene.search.suggest.document.SuggestField

`FIELD_TYPE`

### Fields inherited from class org.apache.lucene.document.Field

`fieldsData, name, tokenStream, type`

### Constructor Summary

Constructors
Constructor and Description
`ContextSuggestField(String name, String value, int weight, CharSequence... contexts)` Creates a context-enabled suggest field

### Method Summary

All Methods Instance Methods Concrete Methods
`protected Iterable<CharSequence>` `contexts()` Expert: Sub-classes can inject contexts at index-time
`protected byte` `type()` Returns a byte to denote the type of the field
`protected CompletionTokenStream` `wrapTokenStream(TokenStream stream)` Wraps a `stream` with a CompletionTokenStream.

### Methods inherited from class org.apache.lucene.search.suggest.document.SuggestField

`tokenStream`

### Methods inherited from class org.apache.lucene.document.Field

`binaryValue, fieldType, getCharSequenceValue, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, stringValue, tokenStreamValue, toString`

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

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

### Field Detail

#### CONTEXT_SEPARATOR

    public static final int CONTEXT_SEPARATOR

Separator used between context value and the suggest field value

See Also:
  Constant Field Values

### Constructor Detail

#### ContextSuggestField

    public ContextSuggestField(String name,
                               String value,
                               int weight,
                               CharSequence... contexts)

Creates a context-enabled suggest field

Parameters:
  `name` - field name
  `value` - field value to get suggestion on
  `weight` - field weight
  `contexts` - associated contexts
Throws:
  `IllegalArgumentException` - if either the name or value is null, if value is an empty string, if the weight is negative, if value or contexts contains any reserved characters

### Method Detail

#### contexts

    protected Iterable<CharSequence> contexts()

Expert: Sub-classes can inject contexts at index-time

#### wrapTokenStream

    protected CompletionTokenStream wrapTokenStream(TokenStream stream)

Description copied from class: `SuggestField`
Wraps a `stream` with a CompletionTokenStream. Subclasses can override this method to change the indexing pipeline.

Overrides:
  `wrapTokenStream` in class `SuggestField`

#### type

    protected byte type()

Description copied from class: `SuggestField`
Returns a byte to denote the type of the field

Overrides:
  `type` in class `SuggestField`