Package org.apache.lucene.util.bkd
Class BKDReader
- java.lang.Object
-
- org.apache.lucene.index.PointValues
-
- org.apache.lucene.util.bkd.BKDReader
-
public final class BKDReader extends PointValues
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 protected static classBKDReader.BKDReaderDocIDSetIteratorReusableDocIdSetIteratorto handle low cardinality leaves.classBKDReader.IndexTreeUsed to walk the off-heap index.static classBKDReader.IntersectStateUsed 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 intpackedBytesLengthprotected intpackedIndexBytesLength-
Fields inherited from class org.apache.lucene.index.PointValues
MAX_DIMENSIONS, MAX_INDEX_DIMENSIONS, MAX_NUM_BYTES
-
-
Constructor Summary
Constructors Constructor Description BKDReader(IndexInput metaIn, IndexInput indexIn, IndexInput dataIn)Caller must pre-seek the providedIndexInputto the index location thatBKDWriter.finish(org.apache.lucene.store.IndexOutput, org.apache.lucene.store.IndexOutput, org.apache.lucene.store.IndexOutput)returned.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longestimatePointCount(PointValues.IntersectVisitor visitor)Estimate the number of points that would be visited byPointValues.intersect(org.apache.lucene.index.PointValues.IntersectVisitor)with the givenPointValues.IntersectVisitor.intgetBytesPerDimension()Returns the number of bytes per dimensionintgetDocCount()Returns the total number of documents that have indexed at least one point.BKDReader.IntersectStategetIntersectState(PointValues.IntersectVisitor visitor)Create a newBKDReader.IntersectStatebyte[]getMaxPackedValue()Returns maximum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)is0byte[]getMinPackedValue()Returns minimum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)is0intgetNumDimensions()Returns how many dimensions are represented in the valuesintgetNumIndexDimensions()Returns how many dimensions are used for the indexvoidintersect(PointValues.IntersectVisitor visitor)Finds all documents and points matching the provided visitor.booleanisLeafNode(int nodeID)longsize()Returns the total number of indexed points across all documents.voidvisitLeafBlockValues(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
estimateDocCount, getDocCount, getMaxPackedValue, getMinPackedValue, size
-
-
-
-
Constructor Detail
-
BKDReader
public BKDReader(IndexInput metaIn, IndexInput indexIn, IndexInput dataIn) throws IOException
Caller must pre-seek the providedIndexInputto the index location thatBKDWriter.finish(org.apache.lucene.store.IndexOutput, org.apache.lucene.store.IndexOutput, org.apache.lucene.store.IndexOutput)returned. BKD tree is always stored off-heap.- Throws:
IOException
-
-
Method Detail
-
intersect
public void intersect(PointValues.IntersectVisitor visitor) throws IOException
Description copied from class:PointValuesFinds 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:
intersectin classPointValues- Throws:
IOException
-
estimatePointCount
public long estimatePointCount(PointValues.IntersectVisitor visitor)
Description copied from class:PointValuesEstimate 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:
estimatePointCountin classPointValues
-
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
-
getMinPackedValue
public byte[] getMinPackedValue()
Description copied from class:PointValuesReturns minimum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)is0- Specified by:
getMinPackedValuein classPointValues
-
getMaxPackedValue
public byte[] getMaxPackedValue()
Description copied from class:PointValuesReturns maximum value for each dimension, packed, or null ifPointValues.size(org.apache.lucene.index.IndexReader, java.lang.String)is0- Specified by:
getMaxPackedValuein classPointValues
-
getNumDimensions
public int getNumDimensions()
Description copied from class:PointValuesReturns how many dimensions are represented in the values- Specified by:
getNumDimensionsin classPointValues
-
getNumIndexDimensions
public int getNumIndexDimensions()
Description copied from class:PointValuesReturns how many dimensions are used for the index- Specified by:
getNumIndexDimensionsin classPointValues
-
getBytesPerDimension
public int getBytesPerDimension()
Description copied from class:PointValuesReturns the number of bytes per dimension- Specified by:
getBytesPerDimensionin classPointValues
-
size
public long size()
Description copied from class:PointValuesReturns the total number of indexed points across all documents.- Specified by:
sizein classPointValues
-
getDocCount
public int getDocCount()
Description copied from class:PointValuesReturns the total number of documents that have indexed at least one point.- Specified by:
getDocCountin classPointValues
-
isLeafNode
public boolean isLeafNode(int nodeID)
-
-