public final class BlockTreeTermsWriter extends FieldsConsumer
Writes terms dict and index, block-encoding (column stride) each term's metadata for each set of terms between two index terms.
If minItemsInAutoPrefix is not zero, then for
IndexOptions.DOCS fields we detect prefixes that match
"enough" terms and insert auto-prefix terms into the index, which are
used by Terms.intersect(org.apache.lucene.util.automaton.CompiledAutomaton, org.apache.lucene.util.BytesRef) at search time to speed up prefix
and range queries. Besides Terms.intersect(org.apache.lucene.util.automaton.CompiledAutomaton, org.apache.lucene.util.BytesRef), these
auto-prefix terms are invisible to all other APIs (don't change terms
stats, don't show up in normal TermsEnums, etc.).
Files:
The .tim file contains the list of terms in each field along with per-term statistics (such as docfreq) and per-term metadata (typically pointers to the postings list for that term in the inverted index).
The .tim is arranged in blocks: with blocks containing a variable number of entries (by default 25-48), where each entry is either a term or a reference to a sub-block.
NOTE: The term dictionary can plug into different postings implementations: the postings writer/reader are actually responsible for encoding and decoding the Postings Metadata and Term Metadata sections.
CodecHeaderUint64VInt length followed by the byte[]VIntVLongCodecFooterNotes:
CodecHeader storing the version information
for the BlockTree implementation.FieldInfos. (.fnm)The .tip file contains an index into the term dictionary, so that it can be accessed randomly. The index is also used to determine when a given term cannot exist on disk (in the .tim file), saving a disk seek.
CodecHeaderUint64VLongFST<byte[]>CodecFooterNotes:
BlockTreeTermsReader| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_MAX_BLOCK_SIZE
Suggested default value for the
maxItemsInBlock parameter to BlockTreeTermsWriter(SegmentWriteState,PostingsWriterBase,int,int). |
static int |
DEFAULT_MIN_BLOCK_SIZE
Suggested default value for the
minItemsInBlock parameter to BlockTreeTermsWriter(SegmentWriteState,PostingsWriterBase,int,int). |
| Constructor and Description |
|---|
BlockTreeTermsWriter(SegmentWriteState state,
PostingsWriterBase postingsWriter,
int minItemsInBlock,
int maxItemsInBlock)
Create a new writer, using default values for auto-prefix terms.
|
BlockTreeTermsWriter(SegmentWriteState state,
PostingsWriterBase postingsWriter,
int minItemsInBlock,
int maxItemsInBlock,
int minItemsInAutoPrefix,
int maxItemsInAutoPrefix)
Create a new writer.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
static void |
validateAutoPrefixSettings(int minItemsInAutoPrefix,
int maxItemsInAutoPrefix)
Throws
IllegalArgumentException if any of these settings
is invalid. |
static void |
validateSettings(int minItemsInBlock,
int maxItemsInBlock)
Throws
IllegalArgumentException if any of these settings
is invalid. |
void |
write(Fields fields)
Write all fields, terms and postings.
|
mergepublic static final int DEFAULT_MIN_BLOCK_SIZE
minItemsInBlock parameter to BlockTreeTermsWriter(SegmentWriteState,PostingsWriterBase,int,int).public static final int DEFAULT_MAX_BLOCK_SIZE
maxItemsInBlock parameter to BlockTreeTermsWriter(SegmentWriteState,PostingsWriterBase,int,int).public BlockTreeTermsWriter(SegmentWriteState state, PostingsWriterBase postingsWriter, int minItemsInBlock, int maxItemsInBlock) throws IOException
IOExceptionpublic BlockTreeTermsWriter(SegmentWriteState state, PostingsWriterBase postingsWriter, int minItemsInBlock, int maxItemsInBlock, int minItemsInAutoPrefix, int maxItemsInAutoPrefix) throws IOException
minItemsInAutoPrefix other terms or prefixes,
and at most maxItemsInAutoPrefix other terms
or prefixes. Set minItemsInAutoPrefix to 0
to disable auto-prefix terms.IOExceptionpublic static void validateSettings(int minItemsInBlock,
int maxItemsInBlock)
IllegalArgumentException if any of these settings
is invalid.public static void validateAutoPrefixSettings(int minItemsInAutoPrefix,
int maxItemsInAutoPrefix)
IllegalArgumentException if any of these settings
is invalid.public void write(Fields fields) throws IOException
FieldsConsumerNotes:
write in class FieldsConsumerIOExceptionpublic void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in class FieldsConsumerIOExceptionCopyright © 2000-2015 Apache Software Foundation. All Rights Reserved.