org.apache.solr.schema
Class EnumField

java.lang.Object
  extended by org.apache.solr.schema.FieldProperties
      extended by org.apache.solr.schema.FieldType
          extended by org.apache.solr.schema.PrimitiveFieldType
              extended by org.apache.solr.schema.EnumField

public class EnumField
extends PrimitiveFieldType

Field type for support of string values with custom sort order.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer
 
Field Summary
protected static int DEFAULT_PRECISION_STEP
           
protected static Integer DEFAULT_VALUE
           
protected  Map<Integer,String> enumIntToStringMap
           
protected  String enumName
           
protected  String enumsConfigFile
           
protected  Map<String,Integer> enumStringToIntMap
           
protected static Locale LOCALE
           
static org.slf4j.Logger log
           
protected static String PARAM_ENUM_NAME
           
protected static String PARAM_ENUMS_CONFIG
           
 
Fields inherited from class org.apache.solr.schema.FieldType
analyzer, ANALYZER, args, CHAR_FILTER, CHAR_FILTERS, CLASS_NAME, docValuesFormat, falseProperties, FILTER, FILTERS, INDEX, INDEX_ANALYZER, MULTI_TERM, MULTI_TERM_ANALYZER, POLY_FIELD_SEPARATOR, postingsFormat, properties, QUERY, QUERY_ANALYZER, queryAnalyzer, similarity, SIMILARITY, similarityFactory, TOKENIZER, trueProperties, TYPE, TYPE_NAME, typeName
 
Fields inherited from class org.apache.solr.schema.FieldProperties
BINARY, DOC_VALUES, INDEXED, MULTIVALUED, OMIT_NORMS, OMIT_POSITIONS, OMIT_TF_POSITIONS, REQUIRED, SORT_MISSING_FIRST, SORT_MISSING_LAST, STORE_OFFSETS, STORE_TERMOFFSETS, STORE_TERMPOSITIONS, STORE_TERMVECTORS, STORED, TOKENIZED
 
Constructor Summary
EnumField()
           
 
Method Summary
 void checkSchemaField(SchemaField field)
          Check's SchemaField instances constructed using this field type to ensure that they are valid.
 IndexableField createField(SchemaField field, Object value, float boost)
          Used for adding a document when a field needs to be created from a type and a string.
 Query getRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive)
          Returns a Query instance for doing range searches on this field type.
 SortField getSortField(SchemaField field, boolean top)
          Returns the SortField instance that should be used to sort fields of this type.
 ValueSource getValueSource(SchemaField field, QParser qparser)
          called to get the default value source (normally, from the Lucene FieldCache.)
 CharsRef indexedToReadable(BytesRef input, CharsRef output)
          Given an indexed term, append the human readable representation
 String indexedToReadable(String indexedForm)
          Given an indexed term, return the human readable representation
protected  void init(IndexSchema schema, Map<String,String> args)
          subclasses should initialize themselves with the args provided and remove valid arguments.
 String intValueToStringValue(Integer intVal)
          Converting the (internal) integer value (indicating the sort order) to string (displayed) value
 boolean isTokenized()
          Returns true if fields of this type should be tokenized
 void readableToIndexed(CharSequence val, BytesRef result)
          Given the readable value, return the term value that will match it.
 String readableToIndexed(String val)
          Given the readable value, return the term value that will match it.
 String storedToIndexed(IndexableField f)
          Given the stored field, return the indexed form
 Integer stringValueToIntValue(String stringVal)
          Converting the string (displayed) value (internal) to integer value (indicating the sort order)
 String toExternal(IndexableField f)
          Convert the stored-field format to an external (string, human readable) value
 String toInternal(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).
 EnumFieldValue toObject(IndexableField f)
          Convert the stored-field format to an external object.
 EnumFieldValue toObject(SchemaField sf, BytesRef term)
          
 void write(TextResponseWriter writer, String name, IndexableField f)
          calls back to TextResponseWriter to write the field value
 
Methods inherited from class org.apache.solr.schema.FieldType
createField, createFields, getAnalyzer, getAnalyzerProperties, getClassArg, getDocValuesFormat, getFieldQuery, getIndexOptions, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericType, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRewriteMethod, getSimilarity, getSimilarityFactory, getStringSort, getTypeName, hasProperty, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPolyField, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, restrictProps, setAnalyzer, setArgs, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToReadable, toString, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

log

public static final org.slf4j.Logger log

LOCALE

protected static final Locale LOCALE

PARAM_ENUMS_CONFIG

protected static final String PARAM_ENUMS_CONFIG
See Also:
Constant Field Values

PARAM_ENUM_NAME

protected static final String PARAM_ENUM_NAME
See Also:
Constant Field Values

DEFAULT_VALUE

protected static final Integer DEFAULT_VALUE

DEFAULT_PRECISION_STEP

protected static final int DEFAULT_PRECISION_STEP
See Also:
Constant Field Values

enumStringToIntMap

protected Map<String,Integer> enumStringToIntMap

enumIntToStringMap

protected Map<Integer,String> enumIntToStringMap

enumsConfigFile

protected String enumsConfigFile

enumName

protected String enumName
Constructor Detail

EnumField

public EnumField()
Method Detail

init

protected void init(IndexSchema schema,
                    Map<String,String> args)
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 PrimitiveFieldType

toObject

public EnumFieldValue toObject(IndexableField f)
Convert the stored-field format to an external object.

Overrides:
toObject in class FieldType
See Also:
FieldType.toInternal(java.lang.String)

getSortField

public SortField getSortField(SchemaField field,
                              boolean top)
Returns the SortField instance that should be used to sort fields of this type.

Specified by:
getSortField in class FieldType
See Also:
SchemaField.checkSortability()

getValueSource

public ValueSource getValueSource(SchemaField field,
                                  QParser qparser)
called to get the default value source (normally, from the Lucene FieldCache.)

Overrides:
getValueSource in class FieldType

write

public void write(TextResponseWriter writer,
                  String name,
                  IndexableField f)
           throws IOException
calls back to TextResponseWriter to write the field value

Specified by:
write in class FieldType
Throws:
IOException

isTokenized

public boolean isTokenized()
Returns true if fields of this type should be tokenized

Overrides:
isTokenized in class FieldType

getRangeQuery

public Query getRangeQuery(QParser parser,
                           SchemaField field,
                           String min,
                           String max,
                           boolean minInclusive,
                           boolean maxInclusive)
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.

Overrides:
getRangeQuery 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

checkSchemaField

public void checkSchemaField(SchemaField field)
Check's SchemaField instances constructed using this field type to ensure that they are valid.

This method is called by the SchemaField constructor to check that it's initialization does not violate any fundemental requirements of the FieldType. The default implementation does nothing, but subclasses may chose to throw a SolrException if invariants are violated by the SchemaField.

Overrides:
checkSchemaField in class FieldType

readableToIndexed

public String readableToIndexed(String val)
Given the readable value, return the term value that will match it.

Overrides:
readableToIndexed in class FieldType

readableToIndexed

public void readableToIndexed(CharSequence val,
                              BytesRef result)
Given the readable value, return the term value that will match it.

Overrides:
readableToIndexed in class FieldType

toInternal

public String toInternal(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).

Overrides:
toInternal in class FieldType
See Also:
FieldType.toExternal(org.apache.lucene.index.IndexableField)

toExternal

public String toExternal(IndexableField f)
Convert the stored-field format to an external (string, human readable) value

Overrides:
toExternal in class FieldType
See Also:
FieldType.toInternal(java.lang.String)

indexedToReadable

public String indexedToReadable(String indexedForm)
Given an indexed term, return the human readable representation

Overrides:
indexedToReadable in class FieldType

indexedToReadable

public CharsRef indexedToReadable(BytesRef input,
                                  CharsRef output)
Given an indexed term, append the human readable representation

Overrides:
indexedToReadable in class FieldType

toObject

public EnumFieldValue toObject(SchemaField sf,
                               BytesRef term)

Overrides:
toObject in class FieldType

storedToIndexed

public String storedToIndexed(IndexableField f)
Given the stored field, return the indexed form

Overrides:
storedToIndexed in class FieldType

createField

public IndexableField createField(SchemaField field,
                                  Object value,
                                  float boost)
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)

intValueToStringValue

public String intValueToStringValue(Integer intVal)
Converting the (internal) integer value (indicating the sort order) to string (displayed) value

Parameters:
intVal - integer value
Returns:
string value

stringValueToIntValue

public Integer stringValueToIntValue(String stringVal)
Converting the string (displayed) value (internal) to integer value (indicating the sort order)

Parameters:
stringVal - string value
Returns:
integer value


Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.