Class TextField

Direct Known Subclasses:
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 Details

    • autoGeneratePhraseQueries

      protected boolean autoGeneratePhraseQueries
    • enableGraphQueries

      protected boolean enableGraphQueries
    • synonymQueryStyle

      protected SolrQueryParserBase.SynonymQueryStyle synonymQueryStyle
    • 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:
  • Constructor Details

    • TextField

      public TextField()
  • Method Details

    • 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:
    • setMultiTermAnalyzer

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

      public boolean getAutoGeneratePhraseQueries()
    • getEnableGraphQueries

      public boolean getEnableGraphQueries()
    • getSynonymQueryStyle

      public SolrQueryParserBase.SynonymQueryStyle getSynonymQueryStyle()
    • getSortField

      public org.apache.lucene.search.SortField getSortField(SchemaField field, boolean reverse)
      Description copied from class: FieldType
      Returns the SortField instance that should be used to sort fields of this type.
      Specified by:
      getSortField in class FieldType
      See Also:
    • 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:
    • write

      public void write(TextResponseWriter writer, String name, org.apache.lucene.index.IndexableField f) throws IOException
      Description copied from class: FieldType
      calls back to TextResponseWriter to write the field value

      Sub-classes should prefer using FieldType.toExternal(IndexableField) or FieldType.toObject(IndexableField) to get the writeable external value of f instead of directly using f.stringValue() or f.binaryValue()

      Specified by:
      write in class FieldType
      Throws:
      IOException
    • 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.
    • toObject

      public Object toObject(SchemaField sf, org.apache.lucene.util.BytesRef term)
      Overrides:
      toObject in class FieldType
    • 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
    • unmarshalSortValue

      public Object unmarshalSortValue(Object value)
      Description copied from class: FieldType
      Convert a value marshaled via FieldType.marshalSortValue(java.lang.Object) back into a value usable by the FieldComparator for this FieldType's SortField
      Overrides:
      unmarshalSortValue in class FieldType
    • isUtf8Field

      public boolean isUtf8Field()
      Overrides:
      isUtf8Field in class FieldType