it.unimi.di.mg4j.index
Class AbstractIndexIterator

java.lang.Object
  extended by it.unimi.di.mg4j.index.AbstractIndexIterator
All Implemented Interfaces:
IndexIterator, DocumentIterator
Direct Known Subclasses:
BitStreamHPIndexReader.BitStreamHPIndexReaderIndexIterator, BitStreamIndexReader.BitStreamIndexReaderIndexIterator, QuasiSuccinctIndexReader.AbstractQuasiSuccinctIndexIterator

public abstract class AbstractIndexIterator
extends Object
implements IndexIterator

A very basic abstract implementation of an index iterator, providing an obvious implementation of IndexIterator.term(), IndexIterator.id(), DocumentIterator.weight() and of the visiting methods.


Field Summary
protected  int id
          The identifier associated with this index iterator.
protected  String term
          The term associated with this index iterator.
protected  double weight
          The weight associated with this index iterator.
 
Fields inherited from interface it.unimi.di.mg4j.index.IndexIterator
END_OF_POSITIONS
 
Fields inherited from interface it.unimi.di.mg4j.search.DocumentIterator
END_OF_LIST
 
Constructor Summary
AbstractIndexIterator()
           
 
Method Summary
<T> T
accept(DocumentIteratorVisitor<T> visitor)
          Accepts a visitor.
<T> T
acceptOnTruePaths(DocumentIteratorVisitor<T> visitor)
          Accepts a visitor after a call to DocumentIterator.nextDocument(), limiting recursion to true paths.
 int id()
          Returns the id of this index iterator.
 IndexIterator id(int id)
          Sets the id of this index iterator.
 String term()
          Returns the term whose inverted list is returned by this index iterator.
 IndexIterator term(CharSequence term)
          Sets the term whose inverted list is returned by this index iterator.
 double weight()
          Returns the weight associated with this iterator.
 IndexIterator weight(double weight)
          Returns the weight of this index iterator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface it.unimi.di.mg4j.index.IndexIterator
count, frequency, index, nextPosition, payload, termNumber
 
Methods inherited from interface it.unimi.di.mg4j.search.DocumentIterator
dispose, document, indices, intervalIterator, intervalIterator, intervalIterators, mayHaveNext, nextDocument, skipTo
 

Field Detail

term

protected String term
The term associated with this index iterator.


id

protected int id
The identifier associated with this index iterator.


weight

protected double weight
The weight associated with this index iterator.

Constructor Detail

AbstractIndexIterator

public AbstractIndexIterator()
Method Detail

term

public String term()
Description copied from interface: IndexIterator
Returns the term whose inverted list is returned by this index iterator.

Usually, the term is automatically set by IndexReader.documents(CharSequence) or IndexReader.documents(int), but you can supply your own term with IndexIterator.term(CharSequence).

Specified by:
term in interface IndexIterator
Returns:
the term over which this iterator is built, as a compact mutable string.
See Also:
IndexIterator.termNumber()

term

public IndexIterator term(CharSequence term)
Description copied from interface: IndexIterator
Sets the term whose inverted list is returned by this index iterator.

Usually, the term is automatically set by Index.documents(CharSequence) or by IndexReader.documents(CharSequence), but you can use this method to ensure that IndexIterator.term() doesn't throw an exception.

Specified by:
term in interface IndexIterator
Parameters:
term - a character sequence (that will be defensively copied) that will be assumed to be the term whose inverted list is returned by this index iterator.
Returns:
this index iterator.

id

public int id()
Description copied from interface: IndexIterator
Returns the id of this index iterator.

Specified by:
id in interface IndexIterator
Returns:
the id of this index iterator.
See Also:
IndexIterator.id(int)

id

public IndexIterator id(int id)
Description copied from interface: IndexIterator
Sets the id of this index iterator.

The id is an integer associated with each index iterator. It has no specific semantics, and can be used differently in different contexts. A typical usage pattern, for instance, is using it to assign a unique number to the index iterators contained in a composite document iterator (say, numbering consecutively the leaves of the composite).

Specified by:
id in interface IndexIterator
Parameters:
id - the new id for this index iterator.
Returns:
this index iterator.

weight

public double weight()
Description copied from interface: DocumentIterator
Returns the weight associated with this iterator.

The number returned by this method has no fixed semantics: different scorers might choose different interpretations, or even ignore it.

Specified by:
weight in interface DocumentIterator
Returns:
the weight associated with this iterator.

weight

public IndexIterator weight(double weight)
Description copied from interface: IndexIterator
Returns the weight of this index iterator.

Specified by:
weight in interface IndexIterator
Specified by:
weight in interface DocumentIterator
Parameters:
weight - the weight of this index iterator.
Returns:
this document iterator.
See Also:
DocumentIterator.weight(double)

accept

public <T> T accept(DocumentIteratorVisitor<T> visitor)
         throws IOException
Description copied from interface: DocumentIterator
Accepts a visitor.

A document iterator is usually structured as composite, with operators as internal nodes and IndexIterators as leaves. This method implements the visitor pattern.

Specified by:
accept in interface DocumentIterator
Parameters:
visitor - the visitor.
Returns:
an object resulting from the visit, or null if the visit was interrupted.
Throws:
IOException

acceptOnTruePaths

public <T> T acceptOnTruePaths(DocumentIteratorVisitor<T> visitor)
                    throws IOException
Description copied from interface: DocumentIterator
Accepts a visitor after a call to 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 OrDocumentIterators 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.

Specified by:
acceptOnTruePaths in interface DocumentIterator
Parameters:
visitor - the visitor.
Returns:
an object resulting from the visit, or null if the visit was interrupted.
Throws:
IOException
See Also:
DocumentIterator.accept(DocumentIteratorVisitor), CounterCollectionVisitor