Class ShapeDocValues

java.lang.Object
org.apache.lucene.document.ShapeDocValues
Direct Known Subclasses:
LatLonShapeDocValues, XYShapeDocValues

abstract class ShapeDocValues extends Object
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

  • Field Details

    • VERSION

      protected static final byte VERSION
      doc value format version; used to support bwc for any encoding changes
      See Also:
    • data

      private final BytesRef data
      the binary doc value
    • shapeComparator

      protected final ShapeDocValues.ShapeComparator shapeComparator
      the geometry comparator used to check relations
    • centroid

      protected final Geometry centroid
      the centroid of the shape docvalue
    • boundingBox

      protected final Geometry 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 a ShapeDocValues instance from a given serialized value
  • Method Details

    • binaryValue

      protected BytesRef binaryValue()
      returns the encoded doc values field as a BytesRef
    • 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

      public ShapeField.DecodedTriangle.TYPE getHighestDimension()
      Retrieves the highest dimensional type (POINT, LINE, TRIANGLE) for computing the geometry(s) centroid
    • computeBinaryValue

      private BytesRef computeBinaryValue(List<ShapeField.DecodedTriangle> tessellation)
    • newGeometryQuery

      public static Query newGeometryQuery(String field, ShapeField.QueryRelation relation, Object... geometries)
      Creates a geometry query for shape docvalues
    • relate

      public PointValues.Relation relate(Component2D component) throws IOException
      Throws:
      IOException
    • getEncoder

      protected abstract ShapeDocValues.Encoder getEncoder()
    • computeCentroid

      protected abstract Geometry computeCentroid()
    • computeBoundingBox

      protected abstract Geometry computeBoundingBox()
    • getCentroid

      public abstract Geometry getCentroid()
    • getBoundingBox

      public abstract Geometry 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

      private int computeComponentSize(ShapeDocValues.TreeNode node, int maxX, int maxY)
    • 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