it.unimi.di.mg4j.search
Class IntervalIterators

java.lang.Object
  extended by it.unimi.di.mg4j.search.IntervalIterators

public class IntervalIterators
extends Object

A class providing static methods and objects that do useful things with interval iterators.


Nested Class Summary
protected static class IntervalIterators.FakeIterator
          An iterator used to instantiate singleton iterators such as TRUE and FALSE.
 
Field Summary
static IntervalIterator FALSE
          A singleton empty interval iterator.
static IntervalIterator TRUE
          A singleton iterator representing maximum truth.
 
Method Summary
static ObjectSet<Interval> pour(IntervalIterator intervalIterator)
          Returns a set containing the intervals enumerated by the specified interval iterators: iteration on the set is guarantee to return the intervals in the same order in which they were enumerated.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRUE

public static final IntervalIterator TRUE
A singleton iterator representing maximum truth.

This iterator is a placeholder for an iterator returning just Intervals.EMPTY_INTERVAL. The antichain formed by the empty interval is the top element of the lattice of antichains, and thus represents the highest truth. Since, however, EMPTY_INTERVAL is a singleton that slightly violates the Interval invariants, an iterator actually returning EMPTY_INTERVAL would cause severe problems in all algorithms manipulating intervals. Rather, TRUE is treated separately and is never actually used in an algorithm on interval antichains (also because, albeit it claims to have elements, it will return null on IntervalIterator.nextInterval()).

A most natural appearance of TRUE is due to negation: all documents satisfying a negative query return TRUE as interval iterator, as the query is true, but you don't know where.

Warning: Before 4.0, an IndexIterator by convention would have returned TRUE when DocumentIterator.intervalIterator(it.unimi.di.mg4j.index.Index) was called with an argument that was not the key index. Now it returns FALSE.


FALSE

public static final IntervalIterator FALSE
A singleton empty interval iterator.

The main usefulness of this iterator is as a singleton: in some circumstances you have to return an empty iterator, and since it is by definition stateless, it is a pity to create a new object (the same considerations led to Collections.emptySet()).

This iterator is used by document iterators as a placeholder whenever DocumentIterator.intervalIterator(it.unimi.di.mg4j.index.Index) is called on an index for which there are not intervals. For instance, an IndexIterator by convention returns FALSE when DocumentIterator.intervalIterator(it.unimi.di.mg4j.index.Index) is called with an argument that is not the key index. Before 4.0, the same placeholder role was held by TRUE instead.

Method Detail

pour

public static ObjectSet<Interval> pour(IntervalIterator intervalIterator)
                                throws IOException
Returns a set containing the intervals enumerated by the specified interval iterators: iteration on the set is guarantee to return the intervals in the same order in which they were enumerated.

Parameters:
intervalIterator - an interval iterator.
Returns:
a set containing the intervals enumerated by intervalIterator.
Throws:
IOException