org.apache.lucene.spatial.vector
Class PointVectorStrategy
java.lang.Object
org.apache.lucene.spatial.SpatialStrategy
org.apache.lucene.spatial.vector.PointVectorStrategy
public class PointVectorStrategy
- extends SpatialStrategy
Simple SpatialStrategy
which represents Points in two numeric DoubleField
s. The Strategy's best feature is decent distance sort.
Characteristics:
Implementation:
This is a simple Strategy. Search works with NumericRangeQuery
s on
an x & y pair of fields. A Circle query does the same bbox query but adds a
ValueSource filter on
SpatialStrategy.makeDistanceValueSource(com.spatial4j.core.shape.Point)
.
One performance shortcoming with this strategy is that a scenario involving
both a search using a Circle and sort will result in calculations for the
spatial distance being done twice -- once for the filter and second for the
sort.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
SUFFIX_X
public static final String SUFFIX_X
- See Also:
- Constant Field Values
SUFFIX_Y
public static final String SUFFIX_Y
- See Also:
- Constant Field Values
precisionStep
public int precisionStep
PointVectorStrategy
public PointVectorStrategy(com.spatial4j.core.context.SpatialContext ctx,
String fieldNamePrefix)
setPrecisionStep
public void setPrecisionStep(int p)
createIndexableFields
public Field[] createIndexableFields(com.spatial4j.core.shape.Shape shape)
- Description copied from class:
SpatialStrategy
- Returns the IndexableField(s) from the
shape
that are to be
added to the Document
. These fields
are expected to be marked as indexed and not stored.
Note: If you want to store the shape as a string for retrieval in
search results, you could add it like this:
document.add(new StoredField(fieldName,ctx.toString(shape)));
The particular string representation used doesn't matter to the Strategy
since it doesn't use it.
- Specified by:
createIndexableFields
in class SpatialStrategy
- Returns:
- Not null nor will it have null elements.
createIndexableFields
public Field[] createIndexableFields(com.spatial4j.core.shape.Point point)
- See Also:
createIndexableFields(com.spatial4j.core.shape.Shape)
makeDistanceValueSource
public ValueSource makeDistanceValueSource(com.spatial4j.core.shape.Point queryPoint,
double multiplier)
- Description copied from class:
SpatialStrategy
- Make a ValueSource returning the distance between the center of the
indexed shape and
queryPoint
. If there are multiple indexed shapes
then the closest one is chosen. The result is multiplied by multiplier
, which
conveniently is used to get the desired units.
- Specified by:
makeDistanceValueSource
in class SpatialStrategy
makeFilter
public Filter makeFilter(SpatialArgs args)
- Description copied from class:
SpatialStrategy
- Make a Filter based principally on
SpatialOperation
and Shape
from the supplied args
.
If a subclasses implements
SpatialStrategy.makeQuery(org.apache.lucene.spatial.query.SpatialArgs)
then this method could be simply:
return new QueryWrapperFilter(makeQuery(args).getQuery());
- Specified by:
makeFilter
in class SpatialStrategy
makeQuery
public ConstantScoreQuery makeQuery(SpatialArgs args)
- Description copied from class:
SpatialStrategy
- Make a Query based principally on
SpatialOperation
and Shape
from the supplied args
.
The default implementation is
return new ConstantScoreQuery(makeFilter(args));
- Overrides:
makeQuery
in class SpatialStrategy
makeQueryDistanceScore
public Query makeQueryDistanceScore(SpatialArgs args)
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.