35 Assert(!left_current.empty());
36 Assert(!right_current.empty());
52 RETURN(left->get_approx_size() + right->get_approx_size());
58 LOGCALL_VOID(EXPAND,
"OrTermList::accumulate_stats", stats);
60 if (left_current <= right_current) left->accumulate_stats(stats);
61 if (left_current >= right_current) right->accumulate_stats(stats);
67 LOGCALL(EXPAND,
string,
"OrTermList::get_termname", NO_ARGS);
69 if (left_current < right_current)
RETURN(left_current);
78 int cmp = left_current.compare(right_current);
79 if (cmp < 0)
RETURN(left->get_wdf());
80 if (cmp > 0)
RETURN(right->get_wdf());
81 RETURN(left->get_wdf() + right->get_wdf());
89 if (left_current < right_current)
RETURN(left->get_termfreq());
90 Assert(left_current > right_current || left->get_termfreq() == right->get_termfreq());
91 RETURN(right->get_termfreq());
111 int cmp = left_current.compare(right_current);
114 if (left->at_end()) {
119 left_current = left->get_termname();
120 }
else if (cmp > 0) {
122 if (right->at_end()) {
127 right_current = right->get_termname();
129 AssertEq(left_current, right_current);
132 if (left->at_end()) {
139 if (right->at_end()) {
144 left_current = left->get_termname();
145 right_current = right->get_termname();
156 if (left->at_end()) {
163 if (right->at_end()) {
168 left_current = left->get_termname();
169 right_current = right->get_termname();
176 LOGCALL(EXPAND,
bool,
"OrTermList::at_end", NO_ARGS);
204 int cmp = left_current.compare(right_current);
205 if (cmp < 0)
RETURN(left->get_termfreq());
206 if (cmp > 0)
RETURN(right->get_termfreq());
207 RETURN(left->get_termfreq() + right->get_termfreq());
std::string get_termname() const
Return the termname at the current position.
Xapian::PositionIterator positionlist_begin() const
Return a PositionIterator for the current position.
void accumulate_stats(Xapian::Internal::ExpandStats &stats) const
Collate weighting information for the current term.
Xapian::termcount get_wdf() const
Return the wdf for the term at the current position.
static void handle_prune(TermList *&old, TermList *result)
Xapian::doccount get_termfreq() const
Return the term frequency for the term at the current position.
Merge two TermList objects using an OR operation.
TermList * skip_to(const std::string &term)
Skip forward to the specified term.
#define LOGCALL_VOID(CATEGORY, FUNC, PARAMS)
Abstract base class for termlists.
Class for iterating over term positions.
Xapian::doccount get_termfreq() const
Return the term frequency for the term at the current position.
unsigned XAPIAN_TERMCOUNT_BASE_TYPE termcount
A counts of terms.
Xapian::termcount positionlist_count() const
Return the length of the position list for the current position.
Class for iterating over term positions.
TermList * next()
Advance the current position to the next term in the termlist.
unsigned XAPIAN_DOCID_BASE_TYPE doccount
A count of documents.
Xapian::termcount get_approx_size() const
Return approximate size of this termlist.
Collates statistics while calculating term weight in an ESet.
void check_started() const
Check that next() has already been called.
Various assertion macros.
#define LOGCALL(CATEGORY, TYPE, FUNC, PARAMS)
bool at_end() const
Return true if the current position is past the last term in this list.