Class PointField
-
- Direct Known Subclasses:
DatePointField,DoublePointField,FloatPointField,IntPointField,LongPointField
public abstract class PointField extends NumericFieldType
Provides field types to support for Lucene'sIntPoint,LongPoint,FloatPointandDoublePoint. SeePointRangeQueryfor more details. It supports integer, float, long and double types. See subclasses for details.
DocValuesare supported for single-value cases (NumericDocValues).FieldCacheis not supported forPointFields, so sorting, faceting, etc on these fields require the use ofdocValues="true"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 static booleanTEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGSThe Test framework can set this global variable to instruct PointField that (on init) it should be tolerant of theprecisionStepargument used by TrieFields.-
Fields inherited from class org.apache.solr.schema.NumericFieldType
doubleOrFloat, type
-
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 PointField()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description List<org.apache.lucene.index.IndexableField>createFields(SchemaField sf, Object value)Given aSchemaField, create one or moreIndexableFieldinstancesprotected abstract org.apache.lucene.search.QuerygetExactQuery(SchemaField field, String externalVal)org.apache.lucene.search.QuerygetFieldQuery(QParser parser, SchemaField field, String externalVal)Returns a Query instance for doing searches against a field.abstract org.apache.lucene.search.QuerygetPointRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive)org.apache.lucene.search.QuerygetPrefixQuery(QParser parser, SchemaField sf, String termStr)Returns a Query instance for doing prefix searches on this field type.org.apache.lucene.search.QuerygetSetQuery(QParser parser, SchemaField field, Collection<String> externalVals)protected abstract org.apache.lucene.queries.function.ValueSourcegetSingleValueSource(org.apache.lucene.search.SortedNumericSelector.Type choice, SchemaField field)Helper method that will only be called for multivalued Point fields that have doc values.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.protected abstract org.apache.lucene.document.StoredFieldgetStoredField(SchemaField sf, Object value)StringindexedToReadable(String indexedForm)Given an indexed term, return the human readable representationprotected abstract StringindexedToReadable(org.apache.lucene.util.BytesRef indexedForm)org.apache.lucene.util.CharsRefindexedToReadable(org.apache.lucene.util.BytesRef indexedForm, org.apache.lucene.util.CharsRefBuilder charsRef)Given an indexed term, append the human readable representationprotected voidinit(IndexSchema schema, Map<String,String> args)NOTE: This method can be removed completely whenTEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGSis removedprotected booleanisFieldUsed(SchemaField field)booleanisPointField()booleanisTokenized()Returns true if fields of this type should be tokenizedbooleanmultiValuedFieldCache()Returns true if a single field value of this type has multiple logical values for the purposes of faceting, sorting, etc.StringstoredToIndexed(org.apache.lucene.index.IndexableField f)Given the stored field, return the indexed formStringstoredToReadable(org.apache.lucene.index.IndexableField f)Given the stored field, return the human readable representationStringtoInternal(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).org.apache.lucene.util.BytesReftoInternalByteRef(String val)voidwrite(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.NumericFieldType
getDocValuesRangeQuery, getNumberType, getRangeQueryForFloatDoubleDocValues, getRangeQueryForMultiValuedDoubleDocValues, getRangeQueryForMultiValuedFloatDocValues, getSpecializedExistenceQuery, numericDocValuesRangeQuery, treatUnboundedRangeAsExistence
-
Methods inherited from class org.apache.solr.schema.PrimitiveFieldType
checkSupportsDocValues, getDefaultMultiValueSelectorForSort
-
Methods inherited from class org.apache.solr.schema.FieldType
checkSchemaField, createField, createField, getAnalyzerProperties, getClassArg, getDocValuesFormat, getExistenceQuery, getFieldTermQuery, getIndexAnalyzer, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericSort, getPostingsFormat, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSimilarity, getSimilarityFactory, getSortedNumericSortField, getSortedSetSortField, getSortField, getStringSort, getTypeName, getUninversionType, getValueSource, hasProperty, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPolyField, isUtf8Field, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, readableToIndexed, readableToIndexed, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, supportsAnalyzers, toExternal, toNativeType, toObject, toObject, toString, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue, useDocValuesAsStored, write
-
-
-
-
Field Detail
-
TEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS
public static boolean TEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS
The Test framework can set this global variable to instruct PointField that (on init) it should be tolerant of theprecisionStepargument used by TrieFields. This allows for simple randomization of TrieFields and PointFields w/o extensive duplication of<fieldType/>declarations.NOTE: When
TrieFieldis removed, this boolean must also be removed- WARNING: This API is experimental and might change in incompatible ways in the next release.
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
-
Method Detail
-
init
protected void init(IndexSchema schema, Map<String,String> args)
NOTE: This method can be removed completely whenTEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGSis removed- Overrides:
initin classPrimitiveFieldType
-
isPointField
public boolean isPointField()
- Overrides:
isPointFieldin classFieldType
-
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:
FieldType.MultiValueSelector
-
getSingleValueSource
protected abstract org.apache.lucene.queries.function.ValueSource getSingleValueSource(org.apache.lucene.search.SortedNumericSelector.Type choice, SchemaField field)Helper method that will only be called for multivalued Point fields that have doc values. Default impl throws an error indicating that selecting a single value from this multivalued field is not supported for this field type- Parameters:
choice- the selector Type to use, will never be nullfield- the field to use, guaranteed to be multivalued.- See Also:
getSingleValueSource(MultiValueSelector,SchemaField,QParser)
-
isTokenized
public boolean isTokenized()
Description copied from class:FieldTypeReturns true if fields of this type should be tokenized- Overrides:
isTokenizedin classFieldType
-
multiValuedFieldCache
public boolean multiValuedFieldCache()
Description copied from class:FieldTypeReturns true if a single field value of this type has multiple logical values for the purposes of faceting, sorting, etc. Text fields normally return true since each token/word is a logical value.- Overrides:
multiValuedFieldCachein classFieldType
-
getSetQuery
public org.apache.lucene.search.Query getSetQuery(QParser parser, SchemaField field, Collection<String> externalVals)
- Overrides:
getSetQueryin classFieldType
-
getFieldQuery
public org.apache.lucene.search.Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
Description copied from class:FieldTypeReturns a Query instance for doing searches against a field.- Overrides:
getFieldQueryin classFieldType- Parameters:
parser- TheQParsercalling the methodfield- TheSchemaFieldof the field to searchexternalVal- The String representation of the value to search- Returns:
- The
Queryinstance. This implementation returns aTermQuerybut overriding queries may not
-
getExactQuery
protected abstract org.apache.lucene.search.Query getExactQuery(SchemaField field, String externalVal)
-
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
-
getPointRangeQuery
public abstract org.apache.lucene.search.Query getPointRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive)
-
storedToReadable
public String storedToReadable(org.apache.lucene.index.IndexableField f)
Description copied from class:FieldTypeGiven the stored field, return the human readable representation- Overrides:
storedToReadablein classFieldType
-
toInternal
public String toInternal(String val)
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:
FieldType.toExternal(org.apache.lucene.index.IndexableField)
-
toInternalByteRef
public org.apache.lucene.util.BytesRef toInternalByteRef(String val)
-
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
-
storedToIndexed
public String storedToIndexed(org.apache.lucene.index.IndexableField f)
Description copied from class:FieldTypeGiven the stored field, return the indexed form- Overrides:
storedToIndexedin classFieldType
-
indexedToReadable
public org.apache.lucene.util.CharsRef indexedToReadable(org.apache.lucene.util.BytesRef indexedForm, org.apache.lucene.util.CharsRefBuilder charsRef)Description copied from class:FieldTypeGiven an indexed term, append the human readable representation- Overrides:
indexedToReadablein classFieldType
-
indexedToReadable
public String indexedToReadable(String indexedForm)
Description copied from class:FieldTypeGiven an indexed term, return the human readable representation- Overrides:
indexedToReadablein classFieldType
-
indexedToReadable
protected abstract String indexedToReadable(org.apache.lucene.util.BytesRef indexedForm)
-
getPrefixQuery
public org.apache.lucene.search.Query getPrefixQuery(QParser parser, SchemaField sf, String termStr)
Description copied from class:FieldTypeReturns a Query instance for doing prefix searches on this field type. Also, other QueryParser implementations may have different semantics.Sub-classes should override this method to provide their own range query implementation.
- Overrides:
getPrefixQueryin classFieldType- Parameters:
parser- theQParsercalling the methodsf- the schema fieldtermStr- the term string for prefix query, if blank then this query should match all docs with this field- Returns:
- a Query instance to perform prefix search
-
isFieldUsed
protected boolean isFieldUsed(SchemaField field)
-
createFields
public List<org.apache.lucene.index.IndexableField> createFields(SchemaField sf, Object value)
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:
FieldType.createField(SchemaField, Object),FieldType.isPolyField()
-
getStoredField
protected abstract org.apache.lucene.document.StoredField getStoredField(SchemaField sf, Object value)
-
getSortField
public org.apache.lucene.search.SortField getSortField(SchemaField field, boolean top)
Description copied from class:FieldTypeReturns the SortField instance that should be used to sort fields of this type.
-
-