# Package org.apache.lucene.util.bkd

Block KD-tree, implementing the generic spatial data structure described in this paper.

See: Description

Interface Summary
PointWriter: Appends many points, and then at the end provides a `PointReader` to iterate those points.

Class Summary
BKDReader: Handles intersection of an multi-dimensional shape in byte[] space with a block KD-tree previously written with `BKDWriter`.
BKDReader.IntersectState: Used to track all state for a single call to `BKDReader.intersect(org.apache.lucene.index.PointValues.IntersectVisitor)`.
BKDWriter: Recursively builds a block KD-tree to assign all incoming points in N-dim space to smaller and smaller N-dim rectangles (cells) until the number of points in a given rectangle is <= `maxPointsInLeafNode`.
HeapPointReader: Utility class to read buffered points from in-heap arrays.
HeapPointWriter: Utility class to write new points into in-heap arrays.
MutablePointsReaderUtils: Utility APIs for sorting and partitioning buffered points.
OfflinePointReader: Reads points from disk in a fixed-with format, previously written with `OfflinePointWriter`.
OfflinePointWriter: Writes points to disk in a fixed-with format.
PointReader: One pass iterator through all points previously written with a `PointWriter`, abstracting away whether points a read from (offline) disk or simple arrays in heap.

## Package org.apache.lucene.util.bkd Description

Block KD-tree, implementing the generic spatial data structure described in this paper.