Class TextField

  • Direct Known Subclasses:
    PreAnalyzedField, SortableTextField

    public class TextField
    extends FieldType
    TextField is the basic type for configurable text analysis. Analyzers for field types using this implementation should be defined in the schema.
    • Field Detail

      • autoGeneratePhraseQueries

        protected boolean autoGeneratePhraseQueries
      • enableGraphQueries

        protected boolean enableGraphQueries
      • multiTermAnalyzer

        protected org.apache.lucene.analysis.Analyzer multiTermAnalyzer
        Analyzer set by schema for text types to use when searching fields of this type, subclasses can set analyzer themselves or override getIndexAnalyzer() This analyzer is used to process wildcard, prefix, regex and other multiterm queries. It assembles a list of tokenizer +filters that "make sense" for this, primarily accent folding and lowercasing filters, and charfilters.
        See Also:
        getMultiTermAnalyzer(), setMultiTermAnalyzer(org.apache.lucene.analysis.Analyzer)
    • Constructor Detail

      • TextField

        public TextField()
    • Method Detail

      • init

        protected void init​(IndexSchema schema,
                            Map<String,​String> args)
        Description copied from class: FieldType
        subclasses should initialize themselves with the args provided and remove valid arguments. leftover arguments will cause an exception. Common boolean properties have already been handled.
        Overrides:
        init in class FieldType
      • getMultiTermAnalyzer

        public org.apache.lucene.analysis.Analyzer getMultiTermAnalyzer()
        Returns the Analyzer to be used when searching fields of this type when mult-term queries are specified.

        This method may be called many times, at any time.

        See Also:
        FieldType.getIndexAnalyzer()
      • setMultiTermAnalyzer

        public void setMultiTermAnalyzer​(org.apache.lucene.analysis.Analyzer analyzer)
      • getAutoGeneratePhraseQueries

        public boolean getAutoGeneratePhraseQueries()
      • getEnableGraphQueries

        public boolean getEnableGraphQueries()
      • getValueSource

        public org.apache.lucene.queries.function.ValueSource getValueSource​(SchemaField field,
                                                                             QParser parser)
        Description copied from class: FieldType
        called to get the default value source (normally, from the Lucene FieldCache.)
        Overrides:
        getValueSource in class FieldType
      • getUninversionType

        public UninvertingReader.Type getUninversionType​(SchemaField sf)
        Description copied from class: FieldType
        If DocValues is not enabled for a field, but it's indexed, docvalues can be constructed on the fly (uninverted, aka fieldcache) on the first request to sort, facet, etc. This specifies the structure to use.

        This method will not be used if the field is (effectively) uninvertible="false"

        Specified by:
        getUninversionType in class FieldType
        Parameters:
        sf - field instance
        Returns:
        type to uninvert, or null (to disallow uninversion for the field)
        See Also:
        SchemaField.isUninvertible()
      • getFieldQuery

        public org.apache.lucene.search.Query getFieldQuery​(QParser parser,
                                                            SchemaField field,
                                                            String externalVal)
        Description copied from class: FieldType
        Returns a Query instance for doing searches against a field.
        Overrides:
        getFieldQuery in class FieldType
        Parameters:
        parser - The QParser calling the method
        field - The SchemaField of the field to search
        externalVal - The String representation of the value to search
        Returns:
        The Query instance. This implementation returns a TermQuery but overriding queries may not
      • getFieldTermQuery

        public org.apache.lucene.search.Query getFieldTermQuery​(QParser parser,
                                                                SchemaField field,
                                                                String externalVal)
        Description copied from class: FieldType
        Returns a Query instance for doing a single term search against a field. This term will not be analyzed before searching.
        Overrides:
        getFieldTermQuery in class FieldType
        Parameters:
        parser - The QParser calling the method
        field - The SchemaField of the field to search
        externalVal - The String representation of the term value to search
        Returns:
        The Query instance.
      • supportsAnalyzers

        protected boolean supportsAnalyzers()
        Description copied from class: FieldType
        Returns true if this type supports index and query analyzers, false otherwise.
        Overrides:
        supportsAnalyzers in class FieldType
      • getSpecializedRangeQuery

        protected org.apache.lucene.search.Query getSpecializedRangeQuery​(QParser parser,
                                                                          SchemaField field,
                                                                          String part1,
                                                                          String part2,
                                                                          boolean minInclusive,
                                                                          boolean maxInclusive)
        Description copied from class: FieldType
        Returns a Query instance for doing range searches on this field type. SolrQueryParser currently passes part1 and part2 as null if they are '*' respectively. minInclusive and maxInclusive are both true currently by SolrQueryParser but that may change in the future. Also, other QueryParser implementations may have different semantics.

        Sub-classes should override this method to provide their own range query implementation. They should strive to handle nulls in part1 and/or part2 as well as unequal minInclusive and maxInclusive parameters gracefully.

        This method does not, and should not, check for or handle existence queries, please look at FieldType.getRangeQuery(org.apache.solr.search.QParser, org.apache.solr.schema.SchemaField, java.lang.String, java.lang.String, boolean, boolean) for that logic.

        Overrides:
        getSpecializedRangeQuery in class FieldType
        Parameters:
        parser - the QParser calling the method
        field - the schema field
        part1 - the lower boundary of the range, nulls are allowed.
        part2 - the upper boundary of the range, nulls are allowed
        minInclusive - whether the minimum of the range is inclusive or not
        maxInclusive - whether the maximum of the range is inclusive or not
        Returns:
        a Query instance to perform range search according to given parameters
      • analyzeMultiTerm

        public static org.apache.lucene.util.BytesRef analyzeMultiTerm​(String field,
                                                                       String part,
                                                                       org.apache.lucene.analysis.Analyzer analyzerIn)
        Analyzes a text part using the provided Analyzer for a multi-term query.

        Expects a single token to be used as multi-term term. This single token might also be filtered out so zero token is supported and null is returned in this case.

        Returns:
        The multi-term term bytes; or null if there is no multi-term terms.
        Throws:
        org.apache.solr.common.SolrException - If the Analyzer tokenizes more than one token; or if an underlying IOException occurs.
      • setIsExplicitMultiTermAnalyzer

        public void setIsExplicitMultiTermAnalyzer​(boolean isExplicitMultiTermAnalyzer)
      • isExplicitMultiTermAnalyzer

        public boolean isExplicitMultiTermAnalyzer()
      • marshalSortValue

        public Object marshalSortValue​(Object value)
        Description copied from class: FieldType
        Convert a value used by the FieldComparator for this FieldType's SortField into a marshalable value for distributed sorting.
        Overrides:
        marshalSortValue in class FieldType