|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter.BaseTermsEnumTraverser org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter.VisitorTemplate
public abstract class AbstractVisitingPrefixTreeFilter.VisitorTemplate
An abstract class designed to make it easy to implement predicates or
other operations on a SpatialPrefixTree
indexed field. An instance
of this class is not designed to be re-used across AtomicReaderContext
instances so simply create a new one for each call to, say a Filter.getDocIdSet(org.apache.lucene.index.AtomicReaderContext, org.apache.lucene.util.Bits)
.
The getDocIdSet()
method here starts the work. It first checks
that there are indexed terms; if not it quickly returns null. Then it calls
start()
so a subclass can set up a return value, like an
OpenBitSet
. Then it starts the traversal
process, calling findSubCellsToVisit(org.apache.lucene.spatial.prefix.tree.Cell)
which by default finds the top cells that intersect queryShape
. If
there isn't an indexed cell for a corresponding cell returned for this
method then it's short-circuited until it finds one, at which point
visit(org.apache.lucene.spatial.prefix.tree.Cell)
is called. At
some depths, of the tree, the algorithm switches to a scanning mode that
finds calls visitScanned(org.apache.lucene.spatial.prefix.tree.Cell)
for each leaf cell found.
Field Summary | |
---|---|
protected boolean |
hasIndexedLeaves
|
Fields inherited from class org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter.BaseTermsEnumTraverser |
---|
acceptDocs, context, docsEnum, maxDoc, termsEnum |
Constructor Summary | |
---|---|
AbstractVisitingPrefixTreeFilter.VisitorTemplate(AtomicReaderContext context,
Bits acceptDocs,
boolean hasIndexedLeaves)
|
Method Summary | |
---|---|
protected Iterator<Cell> |
findSubCellsToVisit(Cell cell)
Called when doing a divide & conquer to find the next intersecting cells of the query shape that are beneath cell . |
protected abstract DocIdSet |
finish()
Called last to return the result. |
DocIdSet |
getDocIdSet()
|
protected void |
postSiblings(AbstractVisitingPrefixTreeFilter.VNode vNode)
|
protected void |
preSiblings(AbstractVisitingPrefixTreeFilter.VNode vNode)
|
protected void |
scan(int scanDetailLevel)
Scans ( termsEnum.next() ) terms until a term is found that does
not start with curVNode's cell. |
protected abstract void |
start()
Called first to setup things. |
protected abstract boolean |
visit(Cell cell)
Visit an indexed cell returned from findSubCellsToVisit(org.apache.lucene.spatial.prefix.tree.Cell) . |
protected abstract void |
visitLeaf(Cell cell)
Called after visit() returns true and an indexed leaf cell is found. |
protected abstract void |
visitScanned(Cell cell)
The cell is either indexed as a leaf or is the last level of detail. |
Methods inherited from class org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter.BaseTermsEnumTraverser |
---|
collectDocs |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final boolean hasIndexedLeaves
Constructor Detail |
---|
public AbstractVisitingPrefixTreeFilter.VisitorTemplate(AtomicReaderContext context, Bits acceptDocs, boolean hasIndexedLeaves) throws IOException
IOException
Method Detail |
---|
public DocIdSet getDocIdSet() throws IOException
IOException
protected Iterator<Cell> findSubCellsToVisit(Cell cell)
cell
. cell
is
guaranteed to have an intersection and thus this must return some number
of nodes.
protected void scan(int scanDetailLevel) throws IOException
termsEnum.next()
) terms until a term is found that does
not start with curVNode's cell. If it finds a leaf cell or a cell at
level scanDetailLevel
then it calls visitScanned(org.apache.lucene.spatial.prefix.tree.Cell)
.
IOException
protected abstract void start() throws IOException
IOException
protected abstract DocIdSet finish() throws IOException
IOException
protected abstract boolean visit(Cell cell) throws IOException
findSubCellsToVisit(org.apache.lucene.spatial.prefix.tree.Cell)
.
cell
- An intersecting cell.
IOException
protected abstract void visitLeaf(Cell cell) throws IOException
IOException
protected abstract void visitScanned(Cell cell) throws IOException
IOException
protected void preSiblings(AbstractVisitingPrefixTreeFilter.VNode vNode) throws IOException
IOException
protected void postSiblings(AbstractVisitingPrefixTreeFilter.VNode vNode) throws IOException
IOException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |