Class MultiDirectIterablePosting

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, IterablePosting, Posting
    Direct Known Subclasses:
    BlockMultiDirectIterablePosting

    public class MultiDirectIterablePosting
    extends java.lang.Object
    implements IterablePosting
    This acts as a wrapper class that surrounds an IterablePosting object. It is designed for use with the MultiDirect structure, to allow fast termid lookups. The motivation is that when iterating over a direct index, the termids that come out are index shard local. To fix this, we add on the number of terms in each preceding lexicon to turn local termids into global ones. The MultiLexicon is then responsible for converting the global termid into its local termid and index shard components, which can be used to do the termid lookup.
    Since:
    4.0
    Author:
    Richard McCreadie
    • Method Detail

      • getId

        public int getId()
        Description copied from interface: Posting
        Return the id of the current posting. For the inverted index, this is the current docid; for the direct index it corresponds to the current term id.
        Specified by:
        getId in interface Posting
        Returns:
        id of the posting.
      • getFrequency

        public int getFrequency()
        Description copied from interface: Posting
        Return the frequency of the term in the current document, in tokens.
        Specified by:
        getFrequency in interface Posting
        Returns:
        frequency of the term in the current document, in tokens.
      • getDocumentLength

        public int getDocumentLength()
        Description copied from interface: Posting
        Return the length of the document of the current posting in tokens. Usually uses the DocumentIndex, may do otherwise if document length statistics are in posting list.
        Specified by:
        getDocumentLength in interface Posting
        Returns:
        length of the document of the current posting in tokens.
      • asWritablePosting

        public WritablePosting asWritablePosting()
        Description copied from interface: Posting
        Copy this posting to one free of an iterator. Kind of like a clone.
        Specified by:
        asWritablePosting in interface Posting
        Returns:
        an identical posting, but which can be manipulated free of this iterator
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • next

        public int next()
                 throws java.io.IOException
        Description copied from interface: IterablePosting
        Move this iterator to the next posting.
        Specified by:
        next in interface IterablePosting
        Returns:
        id of next posting, or EOL if end of posting list.
        Throws:
        java.io.IOException
      • next

        public int next​(int targetId)
                 throws java.io.IOException
        Description copied from interface: IterablePosting
        Move this iterator to the posting with specified id, or next posting after that if a posting with the specified id does not exist. This is usually implemented internally by IterablePosting.next(), but more efficient implementations can override this behaviour.
        Specified by:
        next in interface IterablePosting
        Parameters:
        targetId - id of the posting to find in this posting list.
        Returns:
        id of the posting found, or EOL if end of posting list is reached.
        Throws:
        java.io.IOException