final class IntersectTermsEnum extends TermsEnum
Terms.intersect(org.apache.lucene.util.automaton.CompiledAutomaton, org.apache.lucene.util.BytesRef) for
block-tree. Note that it cannot seek, except for the initial term on
init. It just "nexts" through the intersection of the automaton and
the terms. It does not use the terms index at all: on init, it
loads the root block, and scans its way to the initial term.
Likewise, in next it scans until it finds a term that matches the
current automaton transition. If the index has auto-prefix terms
(only for DOCS_ONLY fields currently) it will visit these terms
when possible and then skip the real terms that auto-prefix term
matched.| Modifier and Type | Class and Description |
|---|---|
private static class |
IntersectTermsEnum.NoMoreTermsException |
TermsEnum.SeekStatus| Modifier and Type | Field and Description |
|---|---|
private boolean |
allowAutoPrefixTerms |
private FST.Arc<BytesRef>[] |
arcs |
(package private) Automaton |
automaton |
(package private) BytesRef |
commonSuffix |
private IntersectTermsEnumFrame |
currentFrame |
private Transition |
currentTransition |
(package private) FieldReader |
fr |
(package private) static Outputs<BytesRef> |
fstOutputs |
private FST.BytesReader |
fstReader |
(package private) IndexInput |
in |
(package private) RunAutomaton |
runAutomaton |
private BytesRef |
savedStartTerm |
private Transition |
scratchTransition |
private int |
sinkState
Which state in the automaton accepts all possible suffixes.
|
(package private) IntersectTermsEnumFrame[] |
stack |
private BytesRef |
term |
private boolean |
useAutoPrefixTerm
True if we did return the current auto-prefix term
|
| Constructor and Description |
|---|
IntersectTermsEnum(FieldReader fr,
Automaton automaton,
RunAutomaton runAutomaton,
BytesRef commonSuffix,
BytesRef startTerm,
int sinkState) |
| Modifier and Type | Method and Description |
|---|---|
private BytesRef |
_next() |
private boolean |
acceptsSuffixRange(int state,
int start,
int end)
Returns true if, from this state, the automaton accepts any suffix
starting with a label between start and end, inclusive.
|
(package private) static java.lang.String |
brToString(BytesRef b) |
private void |
copyTerm() |
int |
docFreq()
Returns the number of documents containing the current
term.
|
private FST.Arc<BytesRef> |
getArc(int ord) |
private IntersectTermsEnumFrame |
getFrame(int ord) |
private int |
getState() |
BytesRef |
next()
Increments the iteration to the next
BytesRef in the iterator. |
long |
ord()
Returns ordinal position for current term.
|
private boolean |
popPushNext() |
PostingsEnum |
postings(PostingsEnum reuse,
int flags)
Get
PostingsEnum for the current term, with
control over whether freqs, positions, offsets or payloads
are required. |
private IntersectTermsEnumFrame |
pushFrame(int state) |
TermsEnum.SeekStatus |
seekCeil(BytesRef text)
Seeks to the specified term, if it exists, or to the
next (ceiling) term.
|
boolean |
seekExact(BytesRef text)
Attempts to seek to the exact term, returning
true if the term is found.
|
void |
seekExact(long ord)
Seeks to the specified term by ordinal (position) as
previously returned by
TermsEnum.ord(). |
private void |
seekToStartTerm(BytesRef target) |
private boolean |
setSavedStartTerm(BytesRef startTerm) |
private boolean |
skipPastLastAutoPrefixTerm() |
BytesRef |
term()
Returns current term.
|
TermState |
termState()
Expert: Returns the TermsEnums internal state to position the TermsEnum
without re-seeking the term dictionary.
|
long |
totalTermFreq()
Returns the total number of occurrences of this term
across all documents (the sum of the freq() for each
doc that has this term).
|
attributes, postings, seekExactfinal IndexInput in
IntersectTermsEnumFrame[] stack
final RunAutomaton runAutomaton
final Automaton automaton
final BytesRef commonSuffix
private IntersectTermsEnumFrame currentFrame
private Transition currentTransition
private final BytesRef term
private final FST.BytesReader fstReader
private final boolean allowAutoPrefixTerms
final FieldReader fr
private final int sinkState
private BytesRef savedStartTerm
private boolean useAutoPrefixTerm
private final Transition scratchTransition
public IntersectTermsEnum(FieldReader fr, Automaton automaton, RunAutomaton runAutomaton, BytesRef commonSuffix, BytesRef startTerm, int sinkState) throws java.io.IOException
java.io.IOExceptionprivate boolean setSavedStartTerm(BytesRef startTerm)
public TermState termState() throws java.io.IOException
TermsEnum
NOTE: A seek by TermState might not capture the
AttributeSource's state. Callers must maintain the
AttributeSource states separately
termState in class TermsEnumjava.io.IOExceptionTermState,
TermsEnum.seekExact(BytesRef, TermState)private IntersectTermsEnumFrame getFrame(int ord) throws java.io.IOException
java.io.IOExceptionprivate IntersectTermsEnumFrame pushFrame(int state) throws java.io.IOException
java.io.IOExceptionpublic BytesRef term()
TermsEnumpublic int docFreq()
throws java.io.IOException
TermsEnumTermsEnum.SeekStatus.END.public long totalTermFreq()
throws java.io.IOException
TermsEnumtotalTermFreq in class TermsEnumjava.io.IOExceptionpublic PostingsEnum postings(PostingsEnum reuse, int flags) throws java.io.IOException
TermsEnumPostingsEnum for the current term, with
control over whether freqs, positions, offsets or payloads
are required. Do not call this when the enum is
unpositioned. This method may return null if the postings
information required is not available from the index
NOTE: the returned iterator may return deleted documents, so
deleted documents have to be checked on top of the PostingsEnum.
postings in class TermsEnumreuse - pass a prior PostingsEnum for possible reuseflags - specifies which optional per-document values
you require; see PostingsEnum.FREQSjava.io.IOExceptionprivate int getState()
private void seekToStartTerm(BytesRef target) throws java.io.IOException
java.io.IOExceptionprivate boolean popPushNext()
throws java.io.IOException
java.io.IOExceptionprivate boolean skipPastLastAutoPrefixTerm()
throws java.io.IOException
java.io.IOExceptionpublic BytesRef next() throws java.io.IOException
BytesRefIteratorBytesRef in the iterator.
Returns the resulting BytesRef or null if the end of
the iterator is reached. The returned BytesRef may be re-used across calls
to next. After this method returns null, do not call it again: the results
are undefined.BytesRef in the iterator or null if
the end of the iterator is reached.java.io.IOException - If there is a low-level I/O error.private BytesRef _next() throws java.io.IOException
java.io.IOExceptionprivate boolean acceptsSuffixRange(int state,
int start,
int end)
static java.lang.String brToString(BytesRef b)
private void copyTerm()
public boolean seekExact(BytesRef text)
TermsEnumTermsEnum.seekCeil(org.apache.lucene.util.BytesRef).public void seekExact(long ord)
TermsEnumTermsEnum.ord(). The target ord
may be before or after the current ord, and must be
within bounds.public long ord()
TermsEnumUnsupportedOperationException). Do not call this
when the enum is unpositioned.public TermsEnum.SeekStatus seekCeil(BytesRef text)
TermsEnum