Package org.apache.solr.legacy
Class BBoxStrategy
- java.lang.Object
-
- org.apache.lucene.spatial.SpatialStrategy
-
- org.apache.solr.legacy.BBoxStrategy
-
public class BBoxStrategy extends org.apache.lucene.spatial.SpatialStrategy
A SpatialStrategy for indexing and searching Rectangles by storing its coordinates in numeric fields. It supports allSpatialOperation
s and has a custom overlap relevancy. It is based on GeoPortal's SpatialClauseAdapter.Characteristics:
- Only indexes Rectangles; just one per field value. Other shapes can be provided and the bounding box will be used.
- Can query only by a Rectangle. Providing other shapes is an error.
- Supports most
SpatialOperation
s but not Overlaps. - Uses the DocValues API for any sorting / relevancy.
Implementation:
This uses 4 double fields for minX, maxX, minY, maxY and a boolean to mark a dateline cross. Depending on the particular
SpatialOperation
s, there are a variety of range queries onDoublePoint
s to be done. ThemakeOverlapRatioValueSource(org.locationtech.spatial4j.shape.Rectangle, double)
works by calculating the query bbox overlap percentage against the indexed shape overlap percentage. The indexed shape's coordinates are retrieved fromLeafReader.getNumericDocValues(java.lang.String)
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Field Summary
Fields Modifier and Type Field Description static org.apache.lucene.document.FieldType
DEFAULT_FIELDTYPE
pointValues, docValues, and nothing else.static LegacyFieldType
LEGACY_FIELDTYPE
Deprecated.static String
SUFFIX_MAXX
static String
SUFFIX_MAXY
static String
SUFFIX_MINX
static String
SUFFIX_MINY
static String
SUFFIX_XDL
-
Constructor Summary
Constructors Constructor Description BBoxStrategy(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix, org.apache.lucene.document.FieldType fieldType)
Creates this strategy.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description org.apache.lucene.document.Field[]
createIndexableFields(org.locationtech.spatial4j.shape.Shape shape)
org.apache.lucene.document.FieldType
getFieldType()
Returns a field type representing the set of field options.org.apache.lucene.search.DoubleValuesSource
makeDistanceValueSource(org.locationtech.spatial4j.shape.Point queryPoint, double multiplier)
org.apache.lucene.search.DoubleValuesSource
makeOverlapRatioValueSource(org.locationtech.spatial4j.shape.Rectangle queryBox, double queryTargetProportion)
Returns a similarity based onBBoxOverlapRatioValueSource
.org.apache.lucene.search.Query
makeQuery(org.apache.lucene.spatial.query.SpatialArgs args)
org.apache.lucene.spatial.ShapeValuesSource
makeShapeValueSource()
Provides access to each rectangle per documentstatic BBoxStrategy
newInstance(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix)
Creates a newBBoxStrategy
instance that usesDoublePoint
andDoublePoint.newRangeQuery(java.lang.String, double, double)
static BBoxStrategy
newLegacyInstance(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix)
Deprecated.LegacyNumerics will be removed
-
-
-
Field Detail
-
DEFAULT_FIELDTYPE
public static org.apache.lucene.document.FieldType DEFAULT_FIELDTYPE
pointValues, docValues, and nothing else.
-
LEGACY_FIELDTYPE
@Deprecated public static LegacyFieldType LEGACY_FIELDTYPE
Deprecated.
-
SUFFIX_MINX
public static final String SUFFIX_MINX
- See Also:
- Constant Field Values
-
SUFFIX_MAXX
public static final String SUFFIX_MAXX
- See Also:
- Constant Field Values
-
SUFFIX_MINY
public static final String SUFFIX_MINY
- See Also:
- Constant Field Values
-
SUFFIX_MAXY
public static final String SUFFIX_MAXY
- See Also:
- Constant Field Values
-
SUFFIX_XDL
public static final String SUFFIX_XDL
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
BBoxStrategy
public BBoxStrategy(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix, org.apache.lucene.document.FieldType fieldType)
Creates this strategy.fieldType
is used to customize the indexing options of the 4 number fields, and to a lesser degree the XDL field too. Search requires pointValues (or legacy numerics), and relevancy requires docValues. If these features aren't needed then disable them.
-
-
Method Detail
-
newInstance
public static BBoxStrategy newInstance(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix)
Creates a newBBoxStrategy
instance that usesDoublePoint
andDoublePoint.newRangeQuery(java.lang.String, double, double)
-
newLegacyInstance
@Deprecated public static BBoxStrategy newLegacyInstance(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldNamePrefix)
Deprecated.LegacyNumerics will be removedCreates a newBBoxStrategy
instance that usesLegacyDoubleField
for backwards compatibility
-
getFieldType
public org.apache.lucene.document.FieldType getFieldType()
Returns a field type representing the set of field options. This is identical to what was passed into the constructor. It's frozen.
-
createIndexableFields
public org.apache.lucene.document.Field[] createIndexableFields(org.locationtech.spatial4j.shape.Shape shape)
- Specified by:
createIndexableFields
in classorg.apache.lucene.spatial.SpatialStrategy
-
makeShapeValueSource
public org.apache.lucene.spatial.ShapeValuesSource makeShapeValueSource()
Provides access to each rectangle per document
-
makeDistanceValueSource
public org.apache.lucene.search.DoubleValuesSource makeDistanceValueSource(org.locationtech.spatial4j.shape.Point queryPoint, double multiplier)
- Specified by:
makeDistanceValueSource
in classorg.apache.lucene.spatial.SpatialStrategy
-
makeOverlapRatioValueSource
public org.apache.lucene.search.DoubleValuesSource makeOverlapRatioValueSource(org.locationtech.spatial4j.shape.Rectangle queryBox, double queryTargetProportion)
Returns a similarity based onBBoxOverlapRatioValueSource
. This is just a convenience method.
-
makeQuery
public org.apache.lucene.search.Query makeQuery(org.apache.lucene.spatial.query.SpatialArgs args)
- Specified by:
makeQuery
in classorg.apache.lucene.spatial.SpatialStrategy
-
-