xapian-core
1.4.26
|
A postlist comprising two postlists ORed together. More...
#include <orpostlist.h>
Public Member Functions | |
Xapian::doccount | get_termfreq_max () const |
Get an upper bound on the number of documents indexed by this term. More... | |
Xapian::doccount | get_termfreq_min () const |
Get a lower bound on the number of documents indexed by this term. More... | |
Xapian::doccount | get_termfreq_est () const |
Get an estimate of the number of documents indexed by this term. More... | |
TermFreqs | get_termfreq_est_using_stats (const Xapian::Weight::Internal &stats) const |
Get an estimate for the termfreq and reltermfreq, given the stats. More... | |
Xapian::docid | get_docid () const |
Return the current docid. More... | |
double | get_weight () const |
Return the weight contribution for the current position. More... | |
double | get_maxweight () const |
Return an upper bound on what get_weight() can return. More... | |
double | recalc_maxweight () |
Recalculate the upper bound on what get_weight() can return. More... | |
PostList * | next (double w_min) |
Advance the current position to the next document in the postlist. More... | |
PostList * | skip_to (Xapian::docid did, double w_min) |
Skip forward to the specified docid. More... | |
PostList * | check (Xapian::docid did, double w_min, bool &valid) |
Check if the specified docid occurs in this postlist. More... | |
bool | at_end () const |
Return true if the current position is past the last entry in this list. More... | |
std::string | get_description () const |
Return a string description of this object. More... | |
virtual Xapian::termcount | get_doclength () const |
Return the document length of the document the current term comes from. More... | |
virtual Xapian::termcount | get_unique_terms () const |
Return the number of unique terms in the document. More... | |
OrPostList (PostList *left_, PostList *right_, MultiMatch *matcher_, Xapian::doccount dbsize_) | |
Xapian::termcount | get_wdf () const |
get_wdf() for OR postlists returns the sum of the wdfs of the sub postlists which are at the current document - this is desirable when the OR is part of a synonym. More... | |
Xapian::termcount | count_matching_subqs () const |
Count the number of leaf subqueries which match at the current position. More... | |
void | gather_position_lists (OrPositionList *orposlist) |
Gather PositionList* objects for a subtree. More... | |
Public Member Functions inherited from BranchPostList | |
BranchPostList (PostList *l_, PostList *r_, MultiMatch *matcher_) | |
virtual | ~BranchPostList () |
Public Member Functions inherited from Xapian::PostingIterator::Internal | |
virtual | ~Internal () |
We have virtual methods and want to be able to delete derived classes using a pointer to the base class, so we need a virtual destructor. More... | |
virtual const std::string * | get_sort_key () const |
virtual const std::string * | get_collapse_key () const |
If the collapse key is already known, return it. More... | |
virtual PositionList * | read_position_list () |
Read the position list for the term in the current document and return a pointer to it (owned by the PostList). More... | |
virtual PositionList * | open_position_list () const |
Read the position list for the term in the current document and return a pointer to it (not owned by the PostList). More... | |
Internal * | next () |
Advance the current position to the next document in the postlist. More... | |
Internal * | skip_to (Xapian::docid did) |
Skip forward to the specified docid. More... | |
Public Member Functions inherited from Xapian::Internal::intrusive_base | |
intrusive_base () | |
Construct with no references. More... | |
Private Attributes | |
Xapian::docid | lhead |
Xapian::docid | rhead |
bool | lvalid |
bool | rvalid |
double | lmax |
double | rmax |
double | minmax |
Xapian::doccount | dbsize |
Additional Inherited Members | |
Public Attributes inherited from Xapian::Internal::intrusive_base | |
unsigned | _refs |
Reference count. More... | |
Protected Member Functions inherited from BranchPostList | |
void | handle_prune (PostList *&kid, PostList *ret) |
Utility method, to call recalc_maxweight() and do the pruning if a next() or skip_to() returns non-NULL result. More... | |
Protected Member Functions inherited from Xapian::PostingIterator::Internal | |
Internal () | |
Only constructable as a base class for derived classes. More... | |
Protected Attributes inherited from BranchPostList | |
PostList * | l |
Left sub-postlist. More... | |
PostList * | r |
Right sub-postlist. More... | |
MultiMatch * | matcher |
The object which is using this postlist to perform a match. More... | |
A postlist comprising two postlists ORed together.
This postlist returns a posting if it is in either of the sub-postlists. The weight for a posting is the sum of the weights of the sub-postings, if both exist, or the sum of the single sub-posting which exists otherwise.
Definition at line 38 of file orpostlist.h.
OrPostList::OrPostList | ( | PostList * | left_, |
PostList * | right_, | ||
MultiMatch * | matcher_, | ||
Xapian::doccount | dbsize_ | ||
) |
Definition at line 38 of file orpostlist.cc.
References AssertRel, Xapian::PostingIterator::Internal::get_termfreq_est(), and LOGCALL_CTOR.
|
virtual |
Return true if the current position is past the last entry in this list.
Implements Xapian::PostingIterator::Internal.
Definition at line 385 of file orpostlist.cc.
References AssertParanoid, Xapian::PostingIterator::Internal::at_end(), BranchPostList::l, LOGCALL, BranchPostList::r, and RETURN.
|
virtual |
Check if the specified docid occurs in this postlist.
The caller is required to ensure that the specified docid actually exists in the database.
This method acts like skip_to() if that can be done at little extra cost, in which case it then sets valid to true.
Otherwise it simply checks if a particular docid is present. If it is, valid is set to true. If it isn't, it sets valid to false, and leaves the position unspecified (and hence the result of calling methods which depend on the current position, such as get_docid() and at_end(), are also unspecified). In this state, next() will advance to the first matching position after docid, and skip_to() will act as it would if the position was the first matching position after docid. If valid is set to false, then NULL must be returned (pruning in this situation doesn't make sense).
The default implementation calls skip_to().
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 196 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::at_end(), check_handling_prune(), dbsize, Xapian::PostingIterator::Internal::get_docid(), BranchPostList::handle_prune(), BranchPostList::l, lhead, lmax, LOGCALL, LOGLINE, lvalid, BranchPostList::matcher, minmax, BranchPostList::r, RETURN, rhead, rmax, rvalid, and AndMaybePostList::sync_rhs().
|
virtual |
Count the number of leaf subqueries which match at the current position.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 449 of file orpostlist.cc.
References Xapian::PostingIterator::Internal::count_matching_subqs(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
|
virtual |
Gather PositionList* objects for a subtree.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 458 of file orpostlist.cc.
References Xapian::PostingIterator::Internal::gather_position_lists(), BranchPostList::l, lhead, BranchPostList::r, and rhead.
|
virtual |
Return a string description of this object.
Implements Xapian::PostingIterator::Internal.
Definition at line 394 of file orpostlist.cc.
References Xapian::PostingIterator::Internal::get_description(), BranchPostList::l, and BranchPostList::r.
|
virtual |
Return the current docid.
Implements Xapian::PostingIterator::Internal.
Definition at line 345 of file orpostlist.cc.
|
virtual |
Return the document length of the document the current term comes from.
This is obtained by asking the subpostlist which contains the current document for the document length. If both subpostlists are valid, the left one is asked.
Implements Xapian::PostingIterator::Internal.
Definition at line 400 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::get_doclength(), BranchPostList::l, lhead, LOGCALL, LOGLINE, BranchPostList::r, RETURN, and rhead.
|
virtual |
Return an upper bound on what get_weight() can return.
Implements Xapian::PostingIterator::Internal.
Definition at line 365 of file orpostlist.cc.
References lmax, LOGCALL, RETURN, and rmax.
Referenced by recalc_maxweight().
|
virtual |
Get an estimate of the number of documents indexed by this term.
It should always be true that: get_termfreq_min() <= get_termfreq_est() <= get_termfreq_max()
Implements Xapian::PostingIterator::Internal.
Definition at line 291 of file orpostlist.cc.
References dbsize, est(), Xapian::PostingIterator::Internal::get_termfreq_est(), BranchPostList::l, LOGCALL, BranchPostList::r, rare, and RETURN.
|
virtual |
Get an estimate for the termfreq and reltermfreq, given the stats.
The frequencies may be for a combination of databases, or for just the relevant documents, so the results need not lie in the bounds given by get_termfreq_min() and get_termfreq_max().
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 312 of file orpostlist.cc.
References Assert, Xapian::Weight::Internal::collection_size, est(), Xapian::PostingIterator::Internal::get_termfreq_est_using_stats(), BranchPostList::l, LOGCALL, BranchPostList::r, RETURN, Xapian::Weight::Internal::rset_size, and Xapian::Weight::Internal::total_length.
|
virtual |
Get an upper bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 277 of file orpostlist.cc.
References dbsize, Xapian::PostingIterator::Internal::get_termfreq_max(), BranchPostList::l, LOGCALL, BranchPostList::r, and RETURN.
|
virtual |
Get a lower bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 284 of file orpostlist.cc.
References Xapian::PostingIterator::Internal::get_termfreq_min(), BranchPostList::l, LOGCALL, BranchPostList::r, and RETURN.
|
virtual |
Return the number of unique terms in the document.
Implements Xapian::PostingIterator::Internal.
Definition at line 420 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::get_unique_terms(), BranchPostList::l, lhead, LOGCALL, LOGLINE, BranchPostList::r, RETURN, and rhead.
|
virtual |
get_wdf() for OR postlists returns the sum of the wdfs of the sub postlists which are at the current document - this is desirable when the OR is part of a synonym.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 440 of file orpostlist.cc.
References Xapian::PostingIterator::Internal::get_wdf(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
|
virtual |
Return the weight contribution for the current position.
Implements Xapian::PostingIterator::Internal.
Definition at line 354 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::get_weight(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
|
virtual |
Advance the current position to the next document in the postlist.
The list starts before the first entry in the list, so next(), skip_to() or check() must be called before any methods which need the context of the current position.
w_min | The minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore). |
Implements Xapian::PostingIterator::Internal.
Definition at line 51 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::at_end(), dbsize, Xapian::PostingIterator::Internal::get_docid(), BranchPostList::handle_prune(), BranchPostList::l, lhead, lmax, LOGCALL, LOGLINE, lvalid, BranchPostList::matcher, minmax, next_handling_prune(), BranchPostList::r, RETURN, rhead, rmax, rvalid, skip_to_handling_prune(), and AndMaybePostList::sync_rhs().
|
virtual |
Recalculate the upper bound on what get_weight() can return.
If the tree has pruned, get_maxweight() may use cached values. Calling this method instead forces a full recalculation.
Note that this method may be called after the postlist has reached the end. In this situation, the method should return 0.
Implements Xapian::PostingIterator::Internal.
Definition at line 372 of file orpostlist.cc.
References get_maxweight(), BranchPostList::l, lmax, LOGCALL, minmax, BranchPostList::r, Xapian::PostingIterator::Internal::recalc_maxweight(), RETURN, and rmax.
|
virtual |
Skip forward to the specified docid.
If the specified docid isn't in the list, position ourselves on the first document after it (or at_end() if no greater docids are present).
w_min | The minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore). |
Implements Xapian::PostingIterator::Internal.
Definition at line 131 of file orpostlist.cc.
References Assert, Xapian::PostingIterator::Internal::at_end(), dbsize, Xapian::PostingIterator::Internal::get_docid(), BranchPostList::handle_prune(), BranchPostList::l, lhead, lmax, LOGCALL, LOGLINE, lvalid, BranchPostList::matcher, minmax, BranchPostList::r, RETURN, rhead, rmax, rvalid, skip_to_handling_prune(), and AndMaybePostList::sync_rhs().
|
private |
Definition at line 43 of file orpostlist.h.
Referenced by check(), get_termfreq_est(), get_termfreq_max(), next(), and skip_to().
|
private |
Definition at line 40 of file orpostlist.h.
Referenced by check(), count_matching_subqs(), gather_position_lists(), get_docid(), get_doclength(), get_unique_terms(), get_wdf(), get_weight(), next(), and skip_to().
|
private |
Definition at line 42 of file orpostlist.h.
Referenced by check(), get_maxweight(), next(), recalc_maxweight(), and skip_to().
|
private |
Definition at line 41 of file orpostlist.h.
|
private |
Definition at line 42 of file orpostlist.h.
Referenced by check(), next(), recalc_maxweight(), and skip_to().
|
private |
Definition at line 40 of file orpostlist.h.
Referenced by check(), count_matching_subqs(), gather_position_lists(), get_docid(), get_doclength(), get_unique_terms(), get_wdf(), get_weight(), next(), and skip_to().
|
private |
Definition at line 42 of file orpostlist.h.
Referenced by check(), get_maxweight(), next(), recalc_maxweight(), and skip_to().
|
private |
Definition at line 41 of file orpostlist.h.