|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object it.unimi.di.mg4j.search.AbstractDocumentIterator it.unimi.di.mg4j.search.AbstractIntervalDocumentIterator it.unimi.di.mg4j.search.AbstractCompositeDocumentIterator
public abstract class AbstractCompositeDocumentIterator
An abstract iterator on documents based on a list of component iterators.
The AbstractCompositeDocumentIterator(Index, Object, DocumentIterator...) caches
into documentIterator
the component iterators, and sets up a number of protected
fields that can be useful to implementors. It also provide abstract member classes that make it
easier to implement interval iterators.
Note that this class implements both accept(DocumentIteratorVisitor)
and acceptOnTruePaths(DocumentIteratorVisitor)
with a series of recursive
calls on all component iterator. If you desire a different behaviour
for acceptOnTruePaths(DocumentIteratorVisitor)
(see, e.g.,
AbstractUnionDocumentIterator
, please override it.
Nested Class Summary | |
---|---|
protected static class |
AbstractCompositeDocumentIterator.AbstractCompositeIndexIntervalIterator
An abstract IndexIterator -based interval iterator. |
protected static class |
AbstractCompositeDocumentIterator.AbstractCompositeIntervalIterator
An abstract interval iterator. |
Field Summary | |
---|---|
DocumentIterator[] |
documentIterator
The component document iterators. |
IndexIterator[] |
indexIterator
A cached copy of documentIterator , if all
underlying iterators are index iterators; null , otherwise. |
protected int |
indexIteratorsWithoutPositions
If indexIterator is not null , the number of index iterators without positions. |
int |
n
The number of component iterators. |
Fields inherited from class it.unimi.di.mg4j.search.AbstractIntervalDocumentIterator |
---|
currentIterators, indices, intervalIterators, soleIndex, soleIntervalIterator, unmodifiableCurrentIterators |
Fields inherited from class it.unimi.di.mg4j.search.AbstractDocumentIterator |
---|
curr, weight |
Fields inherited from interface it.unimi.di.mg4j.search.DocumentIterator |
---|
END_OF_LIST |
Constructor Summary | |
---|---|
protected |
AbstractCompositeDocumentIterator(DocumentIterator... documentIterator)
Creates a new composite document iterator using a given list of component document iterators. |
protected |
AbstractCompositeDocumentIterator(Index index,
Object arg,
DocumentIterator... documentIterator)
Creates a new composite document iterator using a given list of component document iterators and a specified index. |
Method Summary | ||
---|---|---|
|
accept(DocumentIteratorVisitor<T> visitor)
Accepts a visitor. |
|
|
acceptOnTruePaths(DocumentIteratorVisitor<T> visitor)
Accepts a visitor after a call to DocumentIterator.nextDocument() ,
limiting recursion to true paths. |
|
void |
dispose()
Disposes this document iterator, releasing all resources. |
|
String |
toString()
|
Methods inherited from class it.unimi.di.mg4j.search.AbstractIntervalDocumentIterator |
---|
allIndexIterators, getIntervalIterator, indices, indices |
Methods inherited from class it.unimi.di.mg4j.search.AbstractDocumentIterator |
---|
document, ensureOnADocument, mayHaveNext, weight, weight |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface it.unimi.di.mg4j.search.DocumentIterator |
---|
document, indices, intervalIterator, intervalIterator, intervalIterators, mayHaveNext, nextDocument, skipTo, weight, weight |
Field Detail |
---|
public final int n
public final DocumentIterator[] documentIterator
public final IndexIterator[] indexIterator
documentIterator
, if all
underlying iterators are index iterators; null
, otherwise.
protected int indexIteratorsWithoutPositions
indexIterator
is not null
, the number of index iterators without positions.
Constructor Detail |
---|
protected AbstractCompositeDocumentIterator(Index index, Object arg, DocumentIterator... documentIterator)
index
- an index that will constitute the only index for which this iterator will return intervals,
or null
to require the computation of the set of indices as the union of the indices
of all component iterators.arg
- an argument that will be passed to AbstractIntervalDocumentIterator.getIntervalIterator(Index, int, boolean, Object)
.documentIterator
- the component iterators.protected AbstractCompositeDocumentIterator(DocumentIterator... documentIterator)
documentIterator
- the component iterators.Method Detail |
---|
public <T> T accept(DocumentIteratorVisitor<T> visitor) throws IOException
DocumentIterator
A document iterator is usually structured as composite,
with operators as internal nodes and IndexIterator
s
as leaves. This method implements the visitor pattern.
accept
in interface DocumentIterator
visitor
- the visitor.
null
if the visit was interrupted.
IOException
public <T> T acceptOnTruePaths(DocumentIteratorVisitor<T> visitor) throws IOException
DocumentIterator
DocumentIterator.nextDocument()
,
limiting recursion to true paths.
After a call to DocumentIterator.nextDocument()
, a document iterator
is positioned over a document. This call is equivalent to DocumentIterator.accept(DocumentIteratorVisitor)
,
but visits only along true paths.
We define a true path as a path from the root of the composite that passes only through
nodes whose associated subtree is positioned on the same document of the root. Note that OrDocumentIterator
s
detach exhausted iterators from the composite tree, so true paths define the subtree that is causing
the current document to satisfy the query represented by this document iterator.
For more elaboration, and the main application of this method, see CounterCollectionVisitor
.
acceptOnTruePaths
in interface DocumentIterator
visitor
- the visitor.
null
if the visit was interrupted.
IOException
DocumentIterator.accept(DocumentIteratorVisitor)
,
CounterCollectionVisitor
public void dispose() throws IOException
DocumentIterator
This method should propagate down to the underlying index iterators, where it should release resources such as open files and network connections. If you're doing your own resource tracking and pooling, then you do not need to call this method.
dispose
in interface DocumentIterator
IOException
public String toString()
toString
in class Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |