Class EnumFieldType


  • public class EnumFieldType
    extends AbstractEnumField
    Field type for support of string values with custom sort order.
    • Constructor Detail

      • EnumFieldType

        public EnumFieldType()
    • 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 class FieldType
        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 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
        min - the lower boundary of the range, nulls are allowed.
        max - 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
      • 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 the result parameter and write from offset 0
        Overrides:
        readableToIndexed in class FieldType
      • 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 class FieldType
      • toObject

        public org.apache.solr.common.EnumFieldValue toObject​(SchemaField sf,
                                                              org.apache.lucene.util.BytesRef term)
        Overrides:
        toObject in class FieldType
      • 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 class FieldType
      • 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 class FieldType
        See Also:
        FieldType.toInternal(java.lang.String)