org.apache.solr.schema
Class PointType

java.lang.Object
  extended by org.apache.solr.schema.FieldProperties
      extended by org.apache.solr.schema.FieldType
          extended by org.apache.solr.schema.AbstractSubTypeFieldType
              extended by org.apache.solr.schema.CoordinateFieldType
                  extended by org.apache.solr.schema.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. See LatLonType for geo-spatial queries.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType
FieldType.DefaultAnalyzer
 
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, ANALYZER, args, CHAR_FILTER, CHAR_FILTERS, CLASS_NAME, docValuesFormat, falseProperties, FILTER, FILTERS, INDEX, INDEX_ANALYZER, log, 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
PointType()
           
 
Method Summary
 IndexableField createField(SchemaField field, Object value, float boost)
          It never makes sense to create a single field, so make it impossible to happen by throwing UnsupportedOperationException
 List<IndexableField> createFields(SchemaField field, Object value, float boost)
          Given a SchemaField, create one or more IndexableField instances
 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
 Query getFieldQuery(QParser parser, SchemaField field, String externalVal)
          Throws UnsupportedOperationException()
 Query getRangeQuery(QParser parser, SchemaField field, String part1, String part2, 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 parser)
          called to get the default value source (normally, from the Lucene FieldCache.)
protected  void init(IndexSchema schema, Map<String,String> args)
          subclasses should initialize themselves with the args provided and remove valid arguments.
 boolean isPolyField()
          A "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via the FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float) 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.
 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.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, getAnalyzer, getAnalyzerProperties, getClassArg, getDocValuesFormat, getIndexOptions, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericType, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRewriteMethod, getSimilarity, getSimilarityFactory, getStringSort, getTypeName, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isTokenized, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, readableToIndexed, readableToIndexed, restrictProps, setAnalyzer, setArgs, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToIndexed, storedToReadable, toExternal, toInternal, toObject, toObject, toString, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PointType

public PointType()
Method Detail

init

protected void init(IndexSchema schema,
                    Map<String,String> args)
Description copied from class: FieldType
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 AbstractSubTypeFieldType

isPolyField

public boolean isPolyField()
Description copied from class: FieldType
A "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via the FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float) 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:
isPolyField in class FieldType
Returns:
true if the FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float) method may return more than one field

createFields

public List<IndexableField> createFields(SchemaField field,
                                         Object value,
                                         float boost)
Description copied from class: FieldType
Given a SchemaField, create one or more IndexableField instances

Overrides:
createFields in class FieldType
Parameters:
field - the SchemaField
value - The value to add to the field
boost - The boost to apply
Returns:
An array of IndexableField
See Also:
FieldType.createField(SchemaField, Object, float), FieldType.isPolyField()

getValueSource

public ValueSource getValueSource(SchemaField field,
                                  QParser parser)
Description copied from class: FieldType
called to get the default value source (normally, from the Lucene FieldCache.)

Overrides:
getValueSource in class FieldType

createField

public IndexableField createField(SchemaField field,
                                  Object value,
                                  float boost)
It never makes sense to create a single field, so make it impossible to happen by throwing UnsupportedOperationException

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

write

public void write(TextResponseWriter writer,
                  String name,
                  IndexableField f)
           throws IOException
Description copied from class: FieldType
calls back to TextResponseWriter to write the field value

Specified by:
write in class FieldType
Throws:
IOException

getSortField

public 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.

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

getRangeQuery

public Query getRangeQuery(QParser parser,
                           SchemaField field,
                           String part1,
                           String part2,
                           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.

Overrides:
getRangeQuery in class FieldType
Parameters:
parser - the QParser calling the method
field - the schema field
part1 - the lower boundary of the range, nulls are allowed.
part2 - 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

getFieldQuery

public Query getFieldQuery(QParser parser,
                           SchemaField field,
                           String externalVal)
Description copied from class: AbstractSubTypeFieldType
Throws UnsupportedOperationException()

Overrides:
getFieldQuery in class AbstractSubTypeFieldType
Parameters:
parser - The QParser calling the method
field - The SchemaField of the field to search
externalVal - The String representation of the value to search
Returns:
The Query instance. This implementation returns a TermQuery but overriding queries may not

createSpatialQuery

public 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:
createSpatialQuery in interface SpatialQueryable
Parameters:
parser - The parser
options - The SpatialOptions for 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 point
result - Holds the result, potentially resizing if needed.
distance - The d from the center to the corner
upperRight - 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 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 parse
dimension - The expected number of values for the point
Returns:
An array of the values that make up the point (aka vector)
Throws:
SolrException - if the dimension specified does not match the number found


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