Class SuggestField

java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.search.suggest.document.SuggestField
All Implemented Interfaces:
IndexableField
Direct Known Subclasses:
ContextSuggestField

public class SuggestField extends Field
Field that indexes a string value and a weight as a weighted completion against a named suggester. Field is tokenized, not stored and stores documents, frequencies and positions. Field can be used to provide near real time document suggestions.

Besides the usual Analyzers, CompletionAnalyzer can be used to tune suggest field only parameters (e.g. preserving token separators, preserving position increments when converting the token stream to an automaton)

Example indexing usage:

 document.add(new SuggestField(name, "suggestion", 4));
 
To perform document suggestions based on the this field, use SuggestIndexSearcher.suggest(CompletionQuery, int, boolean)
  • Field Details

    • FIELD_TYPE

      public static final FieldType FIELD_TYPE
      Default field type for suggest field
    • TYPE

      static final byte TYPE
      See Also:
    • surfaceForm

      private final BytesRef surfaceForm
    • weight

      private final int weight
  • Constructor Details

    • SuggestField

      public SuggestField(String name, String value, int weight)
      Creates a SuggestField
      Parameters:
      name - field name
      value - field value to get suggestions on
      weight - field weight
      Throws:
      IllegalArgumentException - if either the name or value is null, if value is an empty string, if the weight is negative, if value contains any reserved characters
  • Method Details

    • tokenStream

      public TokenStream tokenStream(Analyzer analyzer, TokenStream reuse)
      Description copied from interface: IndexableField
      Creates the TokenStream used for indexing this field. If appropriate, implementations should use the given Analyzer to create the TokenStreams.
      Specified by:
      tokenStream in interface IndexableField
      Overrides:
      tokenStream in class Field
      Parameters:
      analyzer - Analyzer that should be used to create the TokenStreams from
      reuse - TokenStream for a previous instance of this field name. This allows custom field types (like StringField and NumericField) that do not use the analyzer to still have good performance. Note: the passed-in type may be inappropriate, for example if you mix up different types of Fields for the same field name. So it's the responsibility of the implementation to check.
      Returns:
      TokenStream value for indexing the document. Should always return a non-null value if the field is to be indexed
    • wrapTokenStream

      protected CompletionTokenStream wrapTokenStream(TokenStream stream)
      Wraps a stream with a CompletionTokenStream.

      Subclasses can override this method to change the indexing pipeline.

    • type

      protected byte type()
      Returns a byte to denote the type of the field
    • buildSuggestPayload

      private BytesRef buildSuggestPayload()
    • isReserved

      private boolean isReserved(char c)