java.lang.Object
org.apache.lucene.document.ShapeDocValues
- Direct Known Subclasses:
LatLonShapeDocValues,XYShapeDocValues
A binary doc values format representation for
LatLonShape and XYShape
Note that this class cannot be instantiated directly due to different encodings XYEncodingUtils and GeoEncodingUtils
Concrete Implementations include: LatLonShapeDocValues and XYShapeDocValues
ShapeDocValues also does not support Multi Geometries because the area of the original
geometries must be included to compute an accurate centroid. To support multi geometries binary
doc values will need to be updated to support multi values (see: NumericDocValues and SortedNumericDocValues
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static interfaceprivate static final classReads values from a ShapeDocValues Fieldprivate final classShape Comparator class provides tree traversal relation methodsprivate final classBuilds an in memory binary tree of tessellated triangles.private final classWrites data from a ShapeDocValues field to a data output array -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Geometrythe bounding box of the shape docvalueprotected final Geometrythe centroid of the shape docvalueprivate final BytesRefthe binary doc valueprotected final ShapeDocValues.ShapeComparatorthe geometry comparator used to check relationsprotected static final bytedoc value format version; used to support bwc for any encoding changes -
Constructor Summary
ConstructorsConstructorDescriptionShapeDocValues(List<ShapeField.DecodedTriangle> tessellation) Creates a instance from a shape tessellationShapeDocValues(BytesRef binaryValue) Creates aShapeDocValuesinstance from a given serialized value -
Method Summary
Modifier and TypeMethodDescriptionprotected BytesRefreturns the encoded doc values field as aBytesRefprivate ShapeDocValues.TreeNodebuildTree(List<ShapeField.DecodedTriangle> tessellation, List<ShapeDocValues.TreeNode> dfsSerialized) main entry point to build the tessellation tree *private BytesRefcomputeBinaryValue(List<ShapeField.DecodedTriangle> tessellation) protected abstract Geometryprotected abstract Geometryprivate intcomputeComponentSize(ShapeDocValues.TreeNode node, int maxX, int maxY) private ShapeDocValues.TreeNodecreateTree(ShapeDocValues.TreeNode[] triangles, int low, int high, boolean splitX, ShapeDocValues.TreeNode parent, List<ShapeDocValues.TreeNode> dfsSerialized) creates the treeabstract Geometryabstract Geometryprotected intRetrieves the encoded x centroid location for the geometry(s)protected intRetrieves the encoded y centroid location for the geometry(s)intreturns the max x value for the shape's bounding boxintreturns the max y value for the shape's bounding boxintreturns the min x value for the shape's bounding boxintreturns the min y value for the shape's bounding boxprotected abstract ShapeDocValues.EncoderRetrieves the highest dimensional type (POINT, LINE, TRIANGLE) for computing the geometry(s) centroidstatic QuerynewGeometryQuery(String field, ShapeField.QueryRelation relation, Object... geometries) Creates a geometry query for shape docvaluesintReturns the number of terms (tessellated triangles) for this shaperelate(Component2D component) protected static intvIntSize(int i) Computes the variable Integer size in bytesprotected static intvLongSize(long i) Computes the variable Long size in bytes
-
Field Details
-
VERSION
protected static final byte VERSIONdoc value format version; used to support bwc for any encoding changes- See Also:
-
data
the binary doc value -
shapeComparator
the geometry comparator used to check relations -
centroid
the centroid of the shape docvalue -
boundingBox
the bounding box of the shape docvalue
-
-
Constructor Details
-
ShapeDocValues
ShapeDocValues(List<ShapeField.DecodedTriangle> tessellation) Creates a instance from a shape tessellation- Parameters:
tessellation- The tessellation (must not be null)
-
ShapeDocValues
ShapeDocValues(BytesRef binaryValue) Creates aShapeDocValuesinstance from a given serialized value
-
-
Method Details
-
binaryValue
returns the encoded doc values field as aBytesRef -
numberOfTerms
public int numberOfTerms()Returns the number of terms (tessellated triangles) for this shape -
getEncodedMinX
public int getEncodedMinX()returns the min x value for the shape's bounding box -
getEncodedMinY
public int getEncodedMinY()returns the min y value for the shape's bounding box -
getEncodedMaxX
public int getEncodedMaxX()returns the max x value for the shape's bounding box -
getEncodedMaxY
public int getEncodedMaxY()returns the max y value for the shape's bounding box -
getEncodedCentroidX
protected int getEncodedCentroidX()Retrieves the encoded x centroid location for the geometry(s) -
getEncodedCentroidY
protected int getEncodedCentroidY()Retrieves the encoded y centroid location for the geometry(s) -
getHighestDimension
Retrieves the highest dimensional type (POINT, LINE, TRIANGLE) for computing the geometry(s) centroid -
computeBinaryValue
-
newGeometryQuery
public static Query newGeometryQuery(String field, ShapeField.QueryRelation relation, Object... geometries) Creates a geometry query for shape docvalues -
relate
- Throws:
IOException
-
getEncoder
-
computeCentroid
-
computeBoundingBox
-
getCentroid
-
getBoundingBox
-
buildTree
private ShapeDocValues.TreeNode buildTree(List<ShapeField.DecodedTriangle> tessellation, List<ShapeDocValues.TreeNode> dfsSerialized) throws IOException main entry point to build the tessellation tree *- Throws:
IOException
-
createTree
private ShapeDocValues.TreeNode createTree(ShapeDocValues.TreeNode[] triangles, int low, int high, boolean splitX, ShapeDocValues.TreeNode parent, List<ShapeDocValues.TreeNode> dfsSerialized) creates the tree -
computeComponentSize
-
vLongSize
protected static int vLongSize(long i) Computes the variable Long size in bytes -
vIntSize
protected static int vIntSize(int i) Computes the variable Integer size in bytes
-