Package 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
    Modifier and Type | Field | Description
    --- | --- | ---
    `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 | Description
    --- | ---
    `ContextSuggestField​(String name, String value, int weight, CharSequence... contexts)` | Creates a context-enabled suggest field

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, storedValue, 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`