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 DoubleFields. The Strategy's best feature is decent distance sort.
Characteristics:
Implementation:
This is a simple Strategy. Search works with NumericRangeQuerys 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.