Package org.apache.solr.schema
Class PointType
-
- All Implemented Interfaces:
SchemaAware,SpatialQueryable
public class PointType extends CoordinateFieldType implements SpatialQueryable
A point type that indexes a point in an n-dimensional space as separate fields and supports range queries. SeeLatLonPointSpatialFieldfor geo-spatial queries.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer, FieldType.MultiValueSelector
-
-
Field Summary
-
Fields inherited from class org.apache.solr.schema.CoordinateFieldType
DEFAULT_DIMENSION, dimension, DIMENSION
-
Fields inherited from class org.apache.solr.schema.AbstractSubTypeFieldType
dynFieldProps, schema, SUB_FIELD_SUFFIX, SUB_FIELD_TYPE, subFieldType, subSuffix, subType, suffix, suffixes
-
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 PointType()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcheckSupportsDocValues()Called byFieldType.checkSchemaField(SchemaField)if the field has docValues.org.apache.lucene.index.IndexableFieldcreateField(SchemaField field, Object value)It never makes sense to create a single field, so make it impossible to happen by throwing UnsupportedOperationExceptionList<org.apache.lucene.index.IndexableField>createFields(SchemaField field, Object value)Given aSchemaField, create one or moreIndexableFieldinstancesorg.apache.lucene.search.QuerycreateSpatialQuery(QParser parser, SpatialOptions options)Calculates the range and creates a RangeQuery (bounding box) wrapped in a BooleanQuery (unless the dimension is 1, one range for every dimension, AND'd together by a Booleanorg.apache.lucene.search.QuerygetFieldQuery(QParser parser, SchemaField field, String externalVal)Throws UnsupportedOperationException()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 part1, String part2, boolean minInclusive, boolean maxInclusive)Care should be taken in calling this with higher order dimensions for performance reasons.doublegetSphereRadius()UninvertingReader.TypegetUninversionType(SchemaField sf)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 parser)called to get the default value source (normally, from the Lucene FieldCache.)protected voidinit(IndexSchema schema, Map<String,String> args)subclasses should initialize themselves with the args provided and remove valid arguments.booleanisPolyField()A "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via theFieldType.createFields(org.apache.solr.schema.SchemaField, Object)method.static String[]parseCommaSeparatedList(String externalVal, int dimension)Given a string containing dimension values encoded in it, separated by commas, return a String array of length dimension containing the values.static double[]vectorBoxCorner(double[] center, double[] result, double distance, boolean upperRight)Return the coordinates of a vector that is the corner of a box (upper right or lower left), assuming a Rectangular coordinate system.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.CoordinateFieldType
getDimension
-
Methods inherited from class org.apache.solr.schema.AbstractSubTypeFieldType
createSuffixCache, getSubType, inform, subField
-
Methods inherited from class org.apache.solr.schema.FieldType
checkSchemaField, createField, enableDocValuesByDefault, getAnalyzerProperties, getClassArg, getDefaultMultiValueSelectorForSort, getDocValuesFormat, getExistenceQuery, getFieldTermQuery, getIndexAnalyzer, getNamedPropertyValues, getNonFieldPropertyArgs, getNumberType, getNumericSort, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSetQuery, getSimilarity, getSimilarityFactory, getSingleValueSource, getSortedNumericSortField, getSortedSetSortField, getSortField, getSpecializedExistenceQuery, getStringSort, getTypeName, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPointField, isTokenized, isUtf8Field, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, readableToIndexed, readableToIndexed, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToIndexed, storedToReadable, supportsAnalyzers, toExternal, toInternal, toNativeType, toObject, toObject, toString, treatUnboundedRangeAsExistence, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue, useDocValuesAsStored, write
-
-
-
-
Method Detail
-
init
protected void init(IndexSchema schema, Map<String,String> args)
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 classAbstractSubTypeFieldType
-
isPolyField
public boolean isPolyField()
Description copied from class:FieldTypeA "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via theFieldType.createFields(org.apache.solr.schema.SchemaField, Object)method. This is useful when hiding the implementation details of a field from the Solr end user. For instance, a spatial point may be represented by multiple different fields.- Overrides:
isPolyFieldin classFieldType- Returns:
- true if the
FieldType.createFields(org.apache.solr.schema.SchemaField, Object)method may return more than one field
-
createFields
public List<org.apache.lucene.index.IndexableField> createFields(SchemaField field, Object value)
Description copied from class:FieldTypeGiven aSchemaField, create one or moreIndexableFieldinstances- Overrides:
createFieldsin classFieldType- Parameters:
field- theSchemaFieldvalue- The value to add to the field- Returns:
- An array of
IndexableField - See Also:
FieldType.createField(SchemaField, Object),FieldType.isPolyField()
-
getValueSource
public org.apache.lucene.queries.function.ValueSource getValueSource(SchemaField field, QParser parser)
Description copied from class:FieldTypecalled to get the default value source (normally, from the Lucene FieldCache.)- Overrides:
getValueSourcein classFieldType
-
createField
public org.apache.lucene.index.IndexableField createField(SchemaField field, Object value)
It never makes sense to create a single field, so make it impossible to happen by throwing UnsupportedOperationException- Overrides:
createFieldin classFieldType- See Also:
FieldType.toInternal(java.lang.String)
-
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
-
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.
-
getUninversionType
public UninvertingReader.Type getUninversionType(SchemaField sf)
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:
SchemaField.isUninvertible()
-
getSpecializedRangeQuery
protected org.apache.lucene.search.Query getSpecializedRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive)
Care should be taken in calling this with higher order dimensions for performance reasons.- Overrides:
getSpecializedRangeQueryin classFieldType- Parameters:
parser- theQParsercalling the methodfield- the schema fieldpart1- the lower boundary of the range, nulls are allowed.part2- 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
-
getFieldQuery
public org.apache.lucene.search.Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
Description copied from class:AbstractSubTypeFieldTypeThrows UnsupportedOperationException()- Overrides:
getFieldQueryin classAbstractSubTypeFieldType- 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
-
checkSupportsDocValues
protected void checkSupportsDocValues()
Description copied from class:FieldTypeCalled byFieldType.checkSchemaField(SchemaField)if the field has docValues. By default none do.- Overrides:
checkSupportsDocValuesin classFieldType
-
createSpatialQuery
public org.apache.lucene.search.Query createSpatialQuery(QParser parser, SpatialOptions options)
Calculates the range and creates a RangeQuery (bounding box) wrapped in a BooleanQuery (unless the dimension is 1, one range for every dimension, AND'd together by a Boolean- Specified by:
createSpatialQueryin interfaceSpatialQueryable- Parameters:
parser- The parseroptions- TheSpatialOptionsfor this filter.- Returns:
- The Query representing the bounding box around the point.
-
vectorBoxCorner
public static double[] vectorBoxCorner(double[] center, double[] result, double distance, boolean upperRight)Return the coordinates of a vector that is the corner of a box (upper right or lower left), assuming a Rectangular coordinate system. Note, this does not apply for points on a sphere or ellipse (although it could be used as an approximation).- Parameters:
center- The center pointresult- Holds the result, potentially resizing if needed.distance- The d from the center to the cornerupperRight- If true, return the coords for the upper right corner, else return the lower left.- Returns:
- The point, either the upperLeft or the lower right
-
parseCommaSeparatedList
public static String[] parseCommaSeparatedList(String externalVal, int dimension) throws org.apache.solr.common.SolrException
Given a string containing dimension values encoded in it, separated by commas, return a String array of length dimension containing the values.- Parameters:
externalVal- The value to parsedimension- The expected number of values for the point- Returns:
- An array of the values that make up the point (aka vector)
- Throws:
org.apache.solr.common.SolrException- if the dimension specified does not match the number found
-
getSphereRadius
public double getSphereRadius()
- Specified by:
getSphereRadiusin interfaceSpatialQueryable
-
-