Class 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 Detail

      • FIELD_TYPE

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

        private final BytesRef surfaceForm
      • weight

        private final int weight
    • Constructor Detail

      • SuggestField

        public SuggestField​(java.lang.String name,
                            java.lang.String value,
                            int weight)
        Creates a SuggestField
        Parameters:
        name - field name
        value - field value to get suggestions on
        weight - field weight
        Throws:
        java.lang.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 Detail

      • 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)