Class BlockTreeTermsReader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<java.lang.String>

    public class BlockTreeTermsReader
    extends FieldsProducer
    A block-based terms index and dictionary that assigns terms to variable length blocks according to how they share prefixes. The terms index is a prefix trie whose leaves are term blocks. The advantage of this approach is that seekExact is often able to determine a term cannot exist without doing any IO, and intersection with Automata is very fast. Note that this terms dictionary has it's own fixed terms index (ie, it does not support a pluggable terms index implementation).

    NOTE: this terms dictionary does not support index divisor when opening an IndexReader. Instead, you can change the min/maxItemsPerBlock during indexing.

    The data structure used by this implementation is very similar to a burst trie (http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.3499), but with added logic to break up too-large blocks of all terms sharing a given prefix into smaller ones.

    Use CheckIndex with the -verbose option to see summary statistics on the blocks in the dictionary. See BlockTreeTermsWriter.

    • Constructor Detail

      • BlockTreeTermsReader

        public BlockTreeTermsReader​(Directory dir,
                                    FieldInfos fieldInfos,
                                    SegmentInfo info,
                                    PostingsReaderBase postingsReader,
                                    IOContext ioContext,
                                    java.lang.String segmentSuffix,
                                    int indexDivisor)
                             throws java.io.IOException
        Sole constructor.
        Throws:
        java.io.IOException
    • Method Detail

      • close

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

        public java.util.Iterator<java.lang.String> iterator()
        Description copied from class: Fields
        Returns an iterator that will step through all fields names. This will not return null.
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.String>
        Specified by:
        iterator in class Fields
      • terms

        public Terms terms​(java.lang.String field)
                    throws java.io.IOException
        Description copied from class: Fields
        Get the Terms for this field. This will return null if the field does not exist.
        Specified by:
        terms in class Fields
        Throws:
        java.io.IOException
      • size

        public int size()
        Description copied from class: Fields
        Returns the number of fields or -1 if the number of distinct field names is unknown. If >= 0, Fields.iterator() will return as many field names.
        Specified by:
        size in class Fields