Class FilteredDocIdSet

  • Direct Known Subclasses:
    BitsFilteredDocIdSet

    public abstract class FilteredDocIdSet
    extends DocIdSet
    Abstract decorator class for a DocIdSet implementation that provides on-demand filtering/validation mechanism on a given DocIdSet.

    Technically, this same functionality could be achieved with ChainedFilter (under queries/), however the benefit of this class is it never materializes the full bitset for the filter. Instead, the match(int) method is invoked on-demand, per docID visited during searching. If you know few docIDs will be visited, and the logic behind match(int) is relatively costly, this may be a better way to filter than ChainedFilter.

    See Also:
    DocIdSet
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Bits bits()
      Optionally provides a Bits interface for random access to matching documents.
      boolean isCacheable()
      This DocIdSet implementation is cacheable if the inner set is cacheable.
      DocIdSetIterator iterator()
      Implementation of the contract to build a DocIdSetIterator.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • FilteredDocIdSet

        public FilteredDocIdSet​(DocIdSet innerSet)
        Constructor.
        Parameters:
        innerSet - Underlying DocIdSet
    • Method Detail

      • isCacheable

        public boolean isCacheable()
        This DocIdSet implementation is cacheable if the inner set is cacheable.
        Overrides:
        isCacheable in class DocIdSet
      • bits

        public Bits bits()
                  throws java.io.IOException
        Description copied from class: DocIdSet
        Optionally provides a Bits interface for random access to matching documents.
        Overrides:
        bits in class DocIdSet
        Returns:
        null, if this DocIdSet does not support random access. In contrast to DocIdSet.iterator(), a return value of null does not imply that no documents match the filter! The default implementation does not provide random access, so you only need to implement this method if your DocIdSet can guarantee random access to every docid in O(1) time without external disk access (as Bits interface cannot throw IOException). This is generally true for bit sets like FixedBitSet, which return itself if they are used as DocIdSet.
        Throws:
        java.io.IOException