Class EnumFieldType
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classModels all the info contained in an enums config XML fileNested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer, FieldType.MultiValueSelector -
Field Summary
FieldsFields 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, typeNameFields 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 -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.lucene.index.IndexableFieldcreateField(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 moreIndexableFieldinstancesReturn the numeric type of this field, or null if this field is not a numeric field.final org.apache.lucene.queries.function.ValueSourcegetSingleValueSource(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.SortFieldgetSortField(SchemaField field, boolean top) Returns the SortField instance that should be used to sort fields of this type.protected org.apache.lucene.search.QuerygetSpecializedRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive) Returns a Query instance for doing range searches on this field type.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.ValueSourcegetValueSource(SchemaField field, QParser qparser) called to get the default value source (normally, from the Lucene FieldCache.)indexedToReadable(String indexedForm) Given an indexed term, return the human readable representationorg.apache.lucene.util.CharsRefindexedToReadable(org.apache.lucene.util.BytesRef input, org.apache.lucene.util.CharsRefBuilder output) Given an indexed term, append the human readable representationprotected voidinit(IndexSchema schema, Map<String, String> args) subclasses should initialize themselves with the args provided and remove valid arguments.booleanReturns true if fields of this type should be tokenizedvoidreadableToIndexed(CharSequence val, org.apache.lucene.util.BytesRefBuilder result) Given the readable value, return the term value that will match it.readableToIndexed(String val) Given the readable value, return the term value that will match it.storedToIndexed(org.apache.lucene.index.IndexableField f) Given the stored field, return the indexed formtoExternal(org.apache.lucene.index.IndexableField f) Convert the stored-field format to an external (string, human readable) valuetoInternal(String val) Convert an external value (from XML update command or from query string) into the internal format for both storing and indexing (which can be modified by any analyzers).toNativeType(Object val) Converts any Object to a java Object native to this field typeorg.apache.solr.common.EnumFieldValuetoObject(org.apache.lucene.index.IndexableField f) Convert the stored-field format to an external object.org.apache.solr.common.EnumFieldValuetoObject(SchemaField sf, org.apache.lucene.util.BytesRef term) voidwrite(TextResponseWriter writer, String name, org.apache.lucene.index.IndexableField f) calls back to TextResponseWriter to write the field valueMethods inherited from class org.apache.solr.schema.PrimitiveFieldType
checkSupportsDocValues, enableDocValuesByDefault, getDefaultMultiValueSelectorForSortMethods 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
-
Field Details
-
enumMapping
-
-
Constructor Details
-
EnumFieldType
public EnumFieldType()
-
-
Method Details
-
init
Description copied from class:FieldTypesubclasses 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:
initin classPrimitiveFieldType
-
getEnumMapping
-
getUninversionType
Description copied from class:FieldTypeIf 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:
getUninversionTypein classFieldType- Parameters:
sf- field instance- Returns:
- type to uninvert, or
null(to disallow uninversion for the field) - See Also:
-
getSpecializedRangeQuery
protected org.apache.lucene.search.Query getSpecializedRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive) Description copied from class:FieldTypeReturns a Query instance for doing range searches on this field type.SolrQueryParsercurrently passespart1andpart2as null if they are '*' respectively.minInclusiveandmaxInclusiveare 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
part1and/orpart2as well as unequalminInclusiveandmaxInclusiveparameters 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:
getSpecializedRangeQueryin classFieldType- Parameters:
parser- theQParsercalling 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
Description copied from class:FieldTypeGiven the readable value, return the term value that will match it. This method will modify the size and length of theresultparameter and write from offset 0- Overrides:
readableToIndexedin classFieldType
-
indexedToReadable
Description copied from class:FieldTypeGiven an indexed term, return the human readable representation- Overrides:
indexedToReadablein 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:FieldTypeGiven an indexed term, append the human readable representation- Overrides:
indexedToReadablein classFieldType
-
toObject
public org.apache.solr.common.EnumFieldValue toObject(SchemaField sf, org.apache.lucene.util.BytesRef term) -
toObject
public org.apache.solr.common.EnumFieldValue toObject(org.apache.lucene.index.IndexableField f) Description copied from class:FieldTypeConvert the stored-field format to an external object. -
storedToIndexed
Description copied from class:FieldTypeGiven the stored field, return the indexed form- Overrides:
storedToIndexedin classFieldType
-
createField
Description copied from class:FieldTypeUsed 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:
createFieldin classFieldType- See Also:
-
createFields
Description copied from class:FieldTypeGiven aSchemaField, create one or moreIndexableFieldinstances- Overrides:
createFieldsin classFieldType- Parameters:
sf- theSchemaFieldvalue- The value to add to the field- Returns:
- An array of
IndexableField - See Also:
-
getSingleValueSource
public final org.apache.lucene.queries.function.ValueSource getSingleValueSource(FieldType.MultiValueSelector choice, SchemaField field, QParser parser) Description copied from class:FieldTypeMethod 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
SchemaFieldthat is in fact not-multivalued, in which case it delegates toFieldType.getValueSource(org.apache.solr.schema.SchemaField, org.apache.solr.search.QParser)- Overrides:
getSingleValueSourcein classFieldType- See Also:
-
getSortField
Description copied from class:FieldTypeReturns the SortField instance that should be used to sort fields of this type.- Specified by:
getSortFieldin classFieldType- See Also:
-
getValueSource
public org.apache.lucene.queries.function.ValueSource getValueSource(SchemaField field, QParser qparser) Description copied from class:FieldTypecalled to get the default value source (normally, from the Lucene FieldCache.)- Overrides:
getValueSourcein classFieldType
-
write
public void write(TextResponseWriter writer, String name, org.apache.lucene.index.IndexableField f) throws IOException Description copied from class:FieldTypecalls back to TextResponseWriter to write the field valueSub-classes should prefer using
FieldType.toExternal(IndexableField)orFieldType.toObject(IndexableField)to get the writeable external value offinstead of directly usingf.stringValue()orf.binaryValue()- Specified by:
writein classFieldType- Throws:
IOException
-
isTokenized
public boolean isTokenized()Description copied from class:FieldTypeReturns true if fields of this type should be tokenized- Overrides:
isTokenizedin classFieldType
-
getNumberType
Description copied from class:FieldTypeReturn the numeric type of this field, or null if this field is not a numeric field.- Overrides:
getNumberTypein classFieldType
-
readableToIndexed
Description copied from class:FieldTypeGiven the readable value, return the term value that will match it.- Overrides:
readableToIndexedin classFieldType
-
toInternal
Description copied from class:FieldTypeConvert an external value (from XML update command or from query string) into the internal format for both storing and indexing (which can be modified by any analyzers).- Overrides:
toInternalin classFieldType- See Also:
-
toExternal
Description copied from class:FieldTypeConvert the stored-field format to an external (string, human readable) value- Overrides:
toExternalin classFieldType- See Also:
-
toNativeType
Description copied from class:FieldTypeConverts any Object to a java Object native to this field type- Overrides:
toNativeTypein classFieldType
-