Package org.apache.lucene.util.bkd
Class BKDReader
- java.lang.Object
-
- org.apache.lucene.index.PointValues
-
- org.apache.lucene.util.bkd.BKDReader
-
- All Implemented Interfaces:
Accountable
public final class BKDReader extends PointValues implements Accountable
Handles intersection of an multi-dimensional shape in byte[] space with a block KD-tree previously written withBKDWriter
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
BKDReader.IndexTree
Used to walk the in-heap indexstatic class
BKDReader.IntersectState
Used to track all state for a single call tointersect(org.apache.lucene.index.PointValues.IntersectVisitor)
.-
Nested classes/interfaces inherited from class org.apache.lucene.index.PointValues
PointValues.IntersectVisitor, PointValues.Relation
-
-
Field Summary
Fields Modifier and Type Field Description protected int
packedBytesLength
protected int
packedIndexBytesLength
-
Fields inherited from class org.apache.lucene.index.PointValues
MAX_DIMENSIONS, MAX_NUM_BYTES
-
-
Constructor Summary
Constructors Constructor Description BKDReader(IndexInput in)
Caller must pre-seek the providedIndexInput
to the index location thatBKDWriter.finish(org.apache.lucene.store.IndexOutput)
returned
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
estimatePointCount(PointValues.IntersectVisitor visitor)
Estimate the number of points that would be visited byPointValues.intersect(org.apache.lucene.index.PointValues.IntersectVisitor)
with the givenPointValues.IntersectVisitor
.int
getBytesPerDimension()
Returns the number of bytes per dimensionint
getDocCount()
Returns the total number of documents that have indexed at least one point.BKDReader.IntersectState
getIntersectState(PointValues.IntersectVisitor visitor)
Create a newBKDReader.IntersectState
byte[]
getMaxPackedValue()
Returns maximum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)
is0
byte[]
getMinPackedValue()
Returns minimum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)
is0
int
getNumDataDimensions()
Returns how many data dimensions are represented in the valuesint
getNumIndexDimensions()
Returns how many dimensions are used for the indexvoid
intersect(PointValues.IntersectVisitor visitor)
Finds all documents and points matching the provided visitor.boolean
isLeafNode(int nodeID)
long
ramBytesUsed()
Return the memory usage of this object in bytes.long
size()
Returns the total number of indexed points across all documents.void
visitLeafBlockValues(BKDReader.IndexTree index, BKDReader.IntersectState state)
Visits all docIDs and packed values in a single leaf block-
Methods inherited from class org.apache.lucene.index.PointValues
getDocCount, getMaxPackedValue, getMinPackedValue, size
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.util.Accountable
getChildResources
-
-
-
-
Constructor Detail
-
BKDReader
public BKDReader(IndexInput in) throws IOException
Caller must pre-seek the providedIndexInput
to the index location thatBKDWriter.finish(org.apache.lucene.store.IndexOutput)
returned- Throws:
IOException
-
-
Method Detail
-
intersect
public void intersect(PointValues.IntersectVisitor visitor) throws IOException
Description copied from class:PointValues
Finds all documents and points matching the provided visitor. This method does not enforce live documents, so it's up to the caller to test whether each document is deleted, if necessary.- Specified by:
intersect
in classPointValues
- Throws:
IOException
-
estimatePointCount
public long estimatePointCount(PointValues.IntersectVisitor visitor)
Description copied from class:PointValues
Estimate the number of points that would be visited byPointValues.intersect(org.apache.lucene.index.PointValues.IntersectVisitor)
with the givenPointValues.IntersectVisitor
. This should run many times faster thanPointValues.intersect(IntersectVisitor)
.- Specified by:
estimatePointCount
in classPointValues
- See Also:
DocIdSetIterator.cost()
-
getIntersectState
public BKDReader.IntersectState getIntersectState(PointValues.IntersectVisitor visitor)
Create a newBKDReader.IntersectState
-
visitLeafBlockValues
public void visitLeafBlockValues(BKDReader.IndexTree index, BKDReader.IntersectState state) throws IOException
Visits all docIDs and packed values in a single leaf block- Throws:
IOException
-
ramBytesUsed
public long ramBytesUsed()
Description copied from interface:Accountable
Return the memory usage of this object in bytes. Negative values are illegal.- Specified by:
ramBytesUsed
in interfaceAccountable
-
getMinPackedValue
public byte[] getMinPackedValue()
Description copied from class:PointValues
Returns minimum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)
is0
- Specified by:
getMinPackedValue
in classPointValues
-
getMaxPackedValue
public byte[] getMaxPackedValue()
Description copied from class:PointValues
Returns maximum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)
is0
- Specified by:
getMaxPackedValue
in classPointValues
-
getNumDataDimensions
public int getNumDataDimensions()
Description copied from class:PointValues
Returns how many data dimensions are represented in the values- Specified by:
getNumDataDimensions
in classPointValues
-
getNumIndexDimensions
public int getNumIndexDimensions()
Description copied from class:PointValues
Returns how many dimensions are used for the index- Specified by:
getNumIndexDimensions
in classPointValues
-
getBytesPerDimension
public int getBytesPerDimension()
Description copied from class:PointValues
Returns the number of bytes per dimension- Specified by:
getBytesPerDimension
in classPointValues
-
size
public long size()
Description copied from class:PointValues
Returns the total number of indexed points across all documents.- Specified by:
size
in classPointValues
-
getDocCount
public int getDocCount()
Description copied from class:PointValues
Returns the total number of documents that have indexed at least one point.- Specified by:
getDocCount
in classPointValues
-
isLeafNode
public boolean isLeafNode(int nodeID)
-
-