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
,FloatPoint
andDoublePoint
. SeePointRangeQuery
for more details. It supports integer, float, long and double types. See subclasses for details.
DocValues
are supported for single-value cases (NumericDocValues
).FieldCache
is not supported forPointField
s, 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 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 theprecisionStep
argument 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 moreIndexableField
instancesprotected abstract org.apache.lucene.search.Query
getExactQuery(SchemaField field, String externalVal)
org.apache.lucene.search.Query
getFieldQuery(QParser parser, SchemaField field, String externalVal)
Returns a Query instance for doing searches against a field.abstract org.apache.lucene.search.Query
getPointRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive)
org.apache.lucene.search.Query
getPrefixQuery(QParser parser, SchemaField sf, String termStr)
Returns a Query instance for doing prefix searches on this field type.org.apache.lucene.search.Query
getSetQuery(QParser parser, SchemaField field, Collection<String> externalVals)
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.org.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.protected abstract org.apache.lucene.document.StoredField
getStoredField(SchemaField sf, Object value)
String
indexedToReadable(String indexedForm)
Given an indexed term, return the human readable representationprotected abstract String
indexedToReadable(org.apache.lucene.util.BytesRef indexedForm)
org.apache.lucene.util.CharsRef
indexedToReadable(org.apache.lucene.util.BytesRef indexedForm, org.apache.lucene.util.CharsRefBuilder charsRef)
Given an indexed term, append the human readable representationprotected void
init(IndexSchema schema, Map<String,String> args)
NOTE: This method can be removed completely whenTEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS
is removedprotected boolean
isFieldUsed(SchemaField field)
boolean
isPointField()
boolean
isTokenized()
Returns true if fields of this type should be tokenizedboolean
multiValuedFieldCache()
Returns true if a single field value of this type has multiple logical values for the purposes of faceting, sorting, etc.String
storedToIndexed(org.apache.lucene.index.IndexableField f)
Given the stored field, return the indexed formString
storedToReadable(org.apache.lucene.index.IndexableField f)
Given the stored field, return the human readable representationString
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).org.apache.lucene.util.BytesRef
toInternalByteRef(String val)
void
write(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 theprecisionStep
argument used by TrieFields. This allows for simple randomization of TrieFields and PointFields w/o extensive duplication of<fieldType/>
declarations.NOTE: When
TrieField
is 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_ARGS
is removed- Overrides:
init
in classPrimitiveFieldType
-
isPointField
public boolean isPointField()
- Overrides:
isPointField
in classFieldType
-
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
-
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:FieldType
Returns true if fields of this type should be tokenized- Overrides:
isTokenized
in classFieldType
-
multiValuedFieldCache
public boolean multiValuedFieldCache()
Description copied from class:FieldType
Returns 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:
multiValuedFieldCache
in classFieldType
-
getSetQuery
public org.apache.lucene.search.Query getSetQuery(QParser parser, SchemaField field, Collection<String> externalVals)
- Overrides:
getSetQuery
in classFieldType
-
getFieldQuery
public org.apache.lucene.search.Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
Description copied from class:FieldType
Returns a Query instance for doing searches against a field.- Overrides:
getFieldQuery
in classFieldType
- Parameters:
parser
- TheQParser
calling the methodfield
- TheSchemaField
of the field to searchexternalVal
- The String representation of the value to search- Returns:
- The
Query
instance. This implementation returns aTermQuery
but 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: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
-
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:FieldType
Given the stored field, return the human readable representation- Overrides:
storedToReadable
in classFieldType
-
toInternal
public String toInternal(String val)
Description copied from class:FieldType
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 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:FieldType
calls back to TextResponseWriter to write the field valueSub-classes should prefer using
FieldType.toExternal(IndexableField)
orFieldType.toObject(IndexableField)
to get the writeable external value off
instead of directly usingf.stringValue()
orf.binaryValue()
- Specified by:
write
in classFieldType
- Throws:
IOException
-
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
-
indexedToReadable
public org.apache.lucene.util.CharsRef indexedToReadable(org.apache.lucene.util.BytesRef indexedForm, org.apache.lucene.util.CharsRefBuilder charsRef)
Description copied from class:FieldType
Given an indexed term, append the human readable representation- Overrides:
indexedToReadable
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
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:FieldType
Returns 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:
getPrefixQuery
in classFieldType
- Parameters:
parser
- theQParser
calling 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: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()
-
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:FieldType
Returns the SortField instance that should be used to sort fields of this type.
-
-