Class EnumFieldType
- java.lang.Object
-
- org.apache.solr.schema.FieldProperties
-
- org.apache.solr.schema.FieldType
-
- org.apache.solr.schema.PrimitiveFieldType
-
- org.apache.solr.schema.AbstractEnumField
-
- org.apache.solr.schema.EnumFieldType
-
public class EnumFieldType extends AbstractEnumField
Field type for support of string values with custom sort order.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.schema.AbstractEnumField
AbstractEnumField.EnumMapping
-
Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer, FieldType.MultiValueSelector
-
-
Field Summary
-
Fields inherited from class org.apache.solr.schema.AbstractEnumField
enumMapping
-
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 EnumFieldType()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.apache.lucene.index.IndexableField
createField(SchemaField field, Object value)
Used for adding a document when a field needs to be created from a type and a string.List<org.apache.lucene.index.IndexableField>
createFields(SchemaField sf, Object value)
Given aSchemaField
, create one or moreIndexableField
instancesorg.apache.lucene.queries.function.ValueSource
getSingleValueSource(FieldType.MultiValueSelector choice, SchemaField field, QParser parser)
Method for dynamically building a ValueSource based on a single value of a multivalued field.org.apache.lucene.search.SortField
getSortField(SchemaField field, boolean top)
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 min, String max, boolean minInclusive, boolean maxInclusive)
Returns a Query instance for doing range searches on this field type.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.String
indexedToReadable(String indexedForm)
Given an indexed term, return the human readable representationorg.apache.lucene.util.CharsRef
indexedToReadable(org.apache.lucene.util.BytesRef input, org.apache.lucene.util.CharsRefBuilder output)
Given an indexed term, append the human readable representationvoid
readableToIndexed(CharSequence val, org.apache.lucene.util.BytesRefBuilder result)
Given the readable value, return the term value that will match it.String
storedToIndexed(org.apache.lucene.index.IndexableField f)
Given the stored field, return the indexed formEnumFieldValue
toObject(SchemaField sf, org.apache.lucene.util.BytesRef term)
-
Methods inherited from class org.apache.solr.schema.AbstractEnumField
getEnumMapping, getNumberType, getValueSource, init, isTokenized, readableToIndexed, toExternal, toInternal, toNativeType, toObject, write
-
Methods inherited from class org.apache.solr.schema.PrimitiveFieldType
checkSupportsDocValues, getDefaultMultiValueSelectorForSort
-
Methods inherited from class org.apache.solr.schema.FieldType
checkSchemaField, createField, getAnalyzerProperties, getClassArg, getDocValuesFormat, getExistenceQuery, getFieldQuery, getFieldTermQuery, getIndexAnalyzer, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericSort, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSetQuery, getSimilarity, getSimilarityFactory, getSortedNumericSortField, getSortedSetSortField, getSortField, getSpecializedExistenceQuery, getStringSort, getTypeName, hasProperty, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPointField, isPolyField, isUtf8Field, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToReadable, supportsAnalyzers, toString, treatUnboundedRangeAsExistence, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue, useDocValuesAsStored, write
-
-
-
-
Method Detail
-
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()
-
getSpecializedRangeQuery
protected org.apache.lucene.search.Query getSpecializedRangeQuery(QParser parser, SchemaField field, String min, String max, 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 fieldmin
- the lower boundary of the range, nulls are allowed.max
- 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
-
readableToIndexed
public void readableToIndexed(CharSequence val, org.apache.lucene.util.BytesRefBuilder result)
Description copied from class:FieldType
Given the readable value, return the term value that will match it. This method will modify the size and length of theresult
parameter and write from offset 0- Overrides:
readableToIndexed
in classFieldType
-
indexedToReadable
public String indexedToReadable(String indexedForm)
Description copied from class:FieldType
Given an indexed term, return the human readable representation- Overrides:
indexedToReadable
in classFieldType
-
indexedToReadable
public org.apache.lucene.util.CharsRef indexedToReadable(org.apache.lucene.util.BytesRef input, org.apache.lucene.util.CharsRefBuilder output)
Description copied from class:FieldType
Given an indexed term, append the human readable representation- Overrides:
indexedToReadable
in classFieldType
-
toObject
public EnumFieldValue toObject(SchemaField sf, org.apache.lucene.util.BytesRef term)
-
storedToIndexed
public String storedToIndexed(org.apache.lucene.index.IndexableField f)
Description copied from class:FieldType
Given the stored field, return the indexed form- Overrides:
storedToIndexed
in classFieldType
-
createField
public org.apache.lucene.index.IndexableField createField(SchemaField field, Object value)
Description copied from class:FieldType
Used for adding a document when a field needs to be created from a type and a string.By default, the indexed value is the same as the stored value (taken from toInternal()). Having a different representation for external, internal, and indexed would present quite a few problems given the current Lucene architecture. An analyzer for adding docs would need to translate internal->indexed while an analyzer for querying would need to translate external->indexed.
The only other alternative to having internal==indexed would be to have internal==external. In this case, toInternal should convert to the indexed representation, toExternal() should do nothing, and createField() should *not* call toInternal, but use the external value and set tokenized=true to get Lucene to convert to the internal(indexed) form. :TODO: clean up and clarify this explanation.
- Overrides:
createField
in classFieldType
- See Also:
FieldType.toInternal(java.lang.String)
-
createFields
public List<org.apache.lucene.index.IndexableField> createFields(SchemaField sf, Object value)
Description copied from class:FieldType
Given aSchemaField
, create one or moreIndexableField
instances- Overrides:
createFields
in classFieldType
- Parameters:
sf
- theSchemaField
value
- The value to add to the field- Returns:
- An array of
IndexableField
- See Also:
FieldType.createField(SchemaField, Object)
,FieldType.isPolyField()
-
getSingleValueSource
public final org.apache.lucene.queries.function.ValueSource getSingleValueSource(FieldType.MultiValueSelector choice, SchemaField field, QParser parser)
Description copied from class:FieldType
Method for dynamically building a ValueSource based on a single value of a multivalued field.The default implementation throws an error except in the trivial case where this method is used on a
SchemaField
that is in fact not-multivalued, in which case it delegates toFieldType.getValueSource(org.apache.solr.schema.SchemaField, org.apache.solr.search.QParser)
- Overrides:
getSingleValueSource
in classFieldType
- See Also:
FieldType.MultiValueSelector
-
getSortField
public org.apache.lucene.search.SortField getSortField(SchemaField field, boolean top)
Description copied from class:FieldType
Returns the SortField instance that should be used to sort fields of this type.
-
-