Class TextField
- java.lang.Object
-
- org.apache.solr.schema.FieldProperties
-
- org.apache.solr.schema.FieldType
-
- org.apache.solr.schema.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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer, FieldType.MultiValueSelector
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
autoGeneratePhraseQueries
protected boolean
enableGraphQueries
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.protected SolrQueryParserBase.SynonymQueryStyle
synonymQueryStyle
-
Fields inherited from class org.apache.solr.schema.FieldType
ANALYZER, args, AUTO_GENERATE_PHRASE_QUERIES, CHAR_FILTER, CHAR_FILTERS, CLASS_NAME, docValuesFormat, ENABLE_GRAPH_QUERIES, falseProperties, FILTER, FILTERS, INDEX, INDEX_ANALYZER, MULTI_TERM, MULTI_TERM_ANALYZER, POLY_FIELD_SEPARATOR, postingsFormat, properties, QUERY, QUERY_ANALYZER, similarity, SIMILARITY, similarityFactory, SYNONYM_QUERY_STYLE, TOKENIZER, trueProperties, TYPE, TYPE_NAME, typeName
-
Fields inherited from class org.apache.solr.schema.FieldProperties
BINARY, DOC_VALUES, INDEXED, LARGE_FIELD, MULTIVALUED, OMIT_NORMS, OMIT_POSITIONS, OMIT_TF_POSITIONS, REQUIRED, SORT_MISSING_FIRST, SORT_MISSING_LAST, STORE_OFFSETS, STORE_TERMOFFSETS, STORE_TERMPAYLOADS, STORE_TERMPOSITIONS, STORE_TERMVECTORS, STORED, TOKENIZED, UNINVERTIBLE, USE_DOCVALUES_AS_STORED
-
-
Constructor Summary
Constructors Constructor Description TextField()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static org.apache.lucene.util.BytesRef
analyzeMultiTerm(String field, String part, org.apache.lucene.analysis.Analyzer analyzerIn)
Analyzes a text part using the providedAnalyzer
for a multi-term query.boolean
getAutoGeneratePhraseQueries()
boolean
getEnableGraphQueries()
org.apache.lucene.search.Query
getFieldQuery(QParser parser, SchemaField field, String externalVal)
Returns a Query instance for doing searches against a field.org.apache.lucene.search.Query
getFieldTermQuery(QParser parser, SchemaField field, String externalVal)
Returns a Query instance for doing a single term search against a field.org.apache.lucene.analysis.Analyzer
getMultiTermAnalyzer()
Returns the Analyzer to be used when searching fields of this type when mult-term queries are specified.org.apache.lucene.search.SortField
getSortField(SchemaField field, boolean reverse)
Returns the SortField instance that should be used to sort fields of this type.protected org.apache.lucene.search.Query
getSpecializedRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive)
Returns a Query instance for doing range searches on this field type.SolrQueryParserBase.SynonymQueryStyle
getSynonymQueryStyle()
UninvertingReader.Type
getUninversionType(SchemaField sf)
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.org.apache.lucene.queries.function.ValueSource
getValueSource(SchemaField field, QParser parser)
called to get the default value source (normally, from the Lucene FieldCache.)protected void
init(IndexSchema schema, Map<String,String> args)
subclasses should initialize themselves with the args provided and remove valid arguments.boolean
isExplicitMultiTermAnalyzer()
boolean
isUtf8Field()
Object
marshalSortValue(Object value)
Convert a value used by the FieldComparator for this FieldType's SortField into a marshalable value for distributed sorting.void
setIsExplicitMultiTermAnalyzer(boolean isExplicitMultiTermAnalyzer)
void
setMultiTermAnalyzer(org.apache.lucene.analysis.Analyzer analyzer)
protected boolean
supportsAnalyzers()
Returns true if this type supports index and query analyzers, false otherwise.Object
toObject(SchemaField sf, org.apache.lucene.util.BytesRef term)
Object
unmarshalSortValue(Object value)
Convert a value marshaled viaFieldType.marshalSortValue(java.lang.Object)
back into a value usable by the FieldComparator for this FieldType's SortFieldvoid
write(TextResponseWriter writer, String name, org.apache.lucene.index.IndexableField f)
calls back to TextResponseWriter to write the field value-
Methods inherited from class org.apache.solr.schema.FieldType
checkSchemaField, checkSupportsDocValues, createField, createField, createFields, getAnalyzerProperties, getClassArg, getDefaultMultiValueSelectorForSort, getDocValuesFormat, getExistenceQuery, getIndexAnalyzer, getNamedPropertyValues, getNonFieldPropertyArgs, getNumberType, getNumericSort, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSetQuery, getSimilarity, getSimilarityFactory, getSingleValueSource, getSortedNumericSortField, getSortedSetSortField, getSortField, getSpecializedExistenceQuery, getStringSort, getTypeName, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPointField, isPolyField, isTokenized, marshalBase64SortValue, marshalStringSortValue, multiValuedFieldCache, readableToIndexed, readableToIndexed, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToIndexed, storedToReadable, toExternal, toInternal, toNativeType, toObject, toString, treatUnboundedRangeAsExistence, unmarshalBase64SortValue, unmarshalStringSortValue, useDocValuesAsStored, write
-
-
-
-
Field Detail
-
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.
-
-
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.
-
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()
-
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.
-
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 classFieldType
-
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 classFieldType
- Parameters:
sf
- field instance- Returns:
- type to uninvert, or
null
(to disallow uninversion for the field) - See Also:
SchemaField.isUninvertible()
-
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 valueSub-classes should prefer using
FieldType.toExternal(IndexableField)
orFieldType.toObject(IndexableField)
to get the writeable external value off
instead of directly usingf.stringValue()
orf.binaryValue()
- Specified by:
write
in classFieldType
- 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 classFieldType
- Parameters:
parser
- TheQParser
calling the methodfield
- TheSchemaField
of the field to searchexternalVal
- The String representation of the value to search- Returns:
- The
Query
instance. This implementation returns aTermQuery
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 classFieldType
- Parameters:
parser
- TheQParser
calling the methodfield
- TheSchemaField
of the field to searchexternalVal
- 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)
-
supportsAnalyzers
protected boolean supportsAnalyzers()
Description copied from class:FieldType
Returns true if this type supports index and query analyzers, false otherwise.- Overrides:
supportsAnalyzers
in classFieldType
-
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 passespart1
andpart2
as null if they are '*' respectively.minInclusive
andmaxInclusive
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/orpart2
as well as unequalminInclusive
andmaxInclusive
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 classFieldType
- Parameters:
parser
- theQParser
calling the methodfield
- the schema fieldpart1
- the lower boundary of the range, nulls are allowed.part2
- the upper boundary of the range, nulls are allowedminInclusive
- whether the minimum of the range is inclusive or notmaxInclusive
- 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 providedAnalyzer
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 theAnalyzer
tokenizes more than one token; or if an underlyingIOException
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 classFieldType
-
unmarshalSortValue
public Object unmarshalSortValue(Object value)
Description copied from class:FieldType
Convert a value marshaled viaFieldType.marshalSortValue(java.lang.Object)
back into a value usable by the FieldComparator for this FieldType's SortField- Overrides:
unmarshalSortValue
in classFieldType
-
isUtf8Field
public boolean isUtf8Field()
- Overrides:
isUtf8Field
in classFieldType
-
-