Details
-
New Feature
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
New
Description
XYDocValuesField provides doc value support for XYPoint.
LatLonDocValuesField provides docvalue support for LatLonPoint.
However, neither LatLonShape nor XYShape currently have a docvalue format.
This lack of doc value support for shapes means facets, aggregations, and IndexOrDocValues queries are currently not possible for Shape field types. This gap needs be closed in lucene.
To support IndexOrDocValues queries along with various geometry aggregations and facets, the ability to compute the spatial relation with the doc value is needed. This is straightforward with XYPoint and LatLonPoint since the doc value encoding is nothing more than a simple 2D integer encoding of the x,y and lat,lon dimensional components. Accomplishing the same with a naive integer encoded binary representation for N-vertex shapes would be costly.
ComponentTree already provides an efficient in memory structure for quickly computing spatial relations over Shape types based on a binary tree of tessellated triangles provided by the Tessellator. Furthermore, this tessellation is already computed at index time. If we create an on-disk representation of ComponentTree 's binary tree of tessellated triangles and use this as the doc value binaryValue format we will be able to efficiently compute spatial relations with this binary representation and achieve the same facet/aggregation result over shapes as we can with points today (e.g., grid facets, centroid, area, etc).