47 const string & prefix)
51 termlists.reserve(dbs.size());
53 vector<intrusive_ptr<Xapian::Database::Internal> >::const_iterator i;
54 for (i = dbs.begin(); i != dbs.end(); ++i) {
55 termlists.push_back((*i)->open_allterms(prefix));
77 if (termlists.empty())
return 0;
78 vector<TermList *>::const_iterator i = termlists.begin();
80 while (++i != termlists.end()) {
81 if ((*i)->get_termname() == current_term)
82 total_tf += (*i)->get_termfreq();
90 if (current_term.empty()) {
93 vector<TermList*>::iterator i = termlists.begin();
94 while (i != termlists.end()) {
98 i = termlists.erase(i);
103 make_heap(termlists.begin(), termlists.end(),
109 pop_heap(termlists.begin(), termlists.end(),
114 termlists.pop_back();
116 termlists.back() = tl;
117 push_heap(termlists.begin(), termlists.end(),
120 }
while (!termlists.empty() &&
121 termlists.front()->get_termname() == current_term);
124 if (termlists.size() <= 1) {
125 if (termlists.empty())
return NULL;
141 vector<TermList*>::iterator i = termlists.begin();
142 while (i != termlists.end()) {
144 if ((*i)->at_end()) {
146 i = termlists.erase(i);
152 if (termlists.size() <= 1) {
153 if (termlists.empty())
return NULL;
168 return termlists.empty();
~MultiAllTermsList()
Destructor.
virtual Internal * next()=0
Advance the current position to the next term in the termlist.
#define AssertRel(A, REL, B)
virtual Internal * skip_to(const std::string &term)=0
Skip forward to the specified term.
Abstract base class for termlists.
bool operator()(const TermList *a, const TermList *b) const
Order by ascending term name.
Hierarchy of classes which Xapian can throw as exceptions.
Xapian::doccount get_termfreq() const
Return the term frequency for the term at the current position.
Class for merging AllTermsList objects from subdatabases.
Comparison functor which orders TermList* by ascending term name.
bool at_end() const
Return true if the current position is past the last term in this list.
virtual bool at_end() const =0
Return true if the current position is past the last term in this list.
virtual std::string get_termname() const =0
Return the termname at the current position.
unsigned XAPIAN_DOCID_BASE_TYPE doccount
A count of documents.
std::string get_termname() const
Return the termname at the current position.
Various assertion macros.
TermList * next()
Advance the current position to the next term in the termlist.
A smart pointer that uses intrusive reference counting.
TermList * skip_to(const std::string &term)
Skip forward to the specified term.
MultiAllTermsList(const MultiAllTermsList &)
Don't allow copying.
void operator()(CLASS *p) const