xapian-core
1.4.27
|
A postlist with weights modified by another postlist. More...
#include <andmaybepostlist.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... | |
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 current document. More... | |
AndMaybePostList (PostList *left_, PostList *right_, MultiMatch *matcher_, Xapian::doccount dbsize_) | |
AndMaybePostList (PostList *left_, PostList *right_, MultiMatch *matcher_, Xapian::doccount dbsize_, Xapian::docid lhead_, Xapian::docid rhead_) | |
Constructor for use by decomposing OrPostList. More... | |
PostList * | sync_rhs (double w_min) |
Synchronise the RHS to the LHS after construction. More... | |
Xapian::termcount | get_wdf () const |
get_wdf() for ANDMAYBE postlists returns the sum of the wdfs of the sub postlists which are at the current document - this is desirable when the ANDMAYBE 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... | |
virtual Internal * | check (Xapian::docid did, double w_min, bool &valid) |
Check if the specified docid occurs in this 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 Member Functions | |
PostList * | process_next_or_skip_to (double w_min, PostList *ret) |
Private Attributes | |
Xapian::doccount | dbsize |
Xapian::docid | lhead |
Xapian::docid | rhead |
double | lmax |
double | rmax |
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 with weights modified by another postlist.
This postlist returns a posting if and only if it is in the left sub-postlist.
If the posting does not occur in the right postlist, the weight for the posting is simply that in the left postlist. If the posting occurs in both postlists, the weight for the posting is the sum of the weights in the sub-postlists.
This type of postlist is useful for specifying a set of terms which must appear in the query result: these terms can be specified as the left hand argument, with the rest of the query being on the right hand side, and having the effect of modifying the weights.
The postlist is also used as a "decay product" of other postlist types during the match process: when a postlist can no longer cause a document to enter the mset on its own, but can influence relative rankings, it may be combined using one of these.
Definition at line 54 of file andmaybepostlist.h.
|
inline |
Definition at line 88 of file andmaybepostlist.h.
|
inline |
Constructor for use by decomposing OrPostList.
Definition at line 99 of file andmaybepostlist.h.
References count_matching_subqs(), gather_position_lists(), Xapian::PostingIterator::Internal::get_maxweight(), get_wdf(), BranchPostList::l, BranchPostList::r, and sync_rhs().
|
virtual |
Return true if the current position is past the last entry in this list.
Implements Xapian::PostingIterator::Internal.
Definition at line 186 of file andmaybepostlist.cc.
|
virtual |
Count the number of leaf subqueries which match at the current position.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 226 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::count_matching_subqs(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
Referenced by AndMaybePostList().
|
virtual |
Gather PositionList* objects for a subtree.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 235 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::gather_position_lists(), BranchPostList::l, lhead, BranchPostList::r, and rhead.
Referenced by AndMaybePostList().
|
virtual |
Return a string description of this object.
Implements Xapian::PostingIterator::Internal.
Definition at line 193 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_description(), BranchPostList::l, and BranchPostList::r.
|
virtual |
Return the current docid.
Implements Xapian::PostingIterator::Internal.
Definition at line 151 of file andmaybepostlist.cc.
|
virtual |
Return the document length of the document the current term comes from.
Implements Xapian::PostingIterator::Internal.
Definition at line 200 of file andmaybepostlist.cc.
References Assert, AssertEq, Xapian::PostingIterator::Internal::get_doclength(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
|
virtual |
Return an upper bound on what get_weight() can return.
Implements Xapian::PostingIterator::Internal.
Definition at line 170 of file andmaybepostlist.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 134 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_termfreq_est(), BranchPostList::l, LOGCALL, 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 142 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_termfreq_est_using_stats(), BranchPostList::l, LOGCALL, and RETURN.
|
virtual |
Get an upper bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 118 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_termfreq_max(), BranchPostList::l, LOGCALL, and RETURN.
|
virtual |
Get a lower bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 126 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_termfreq_min(), BranchPostList::l, LOGCALL, and RETURN.
|
virtual |
Return the number of unique terms in the current document.
Implements Xapian::PostingIterator::Internal.
Definition at line 209 of file andmaybepostlist.cc.
References Assert, AssertEq, Xapian::PostingIterator::Internal::get_unique_terms(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
|
virtual |
get_wdf() for ANDMAYBE postlists returns the sum of the wdfs of the sub postlists which are at the current document - this is desirable when the ANDMAYBE is part of a synonym.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 218 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::get_wdf(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.
Referenced by AndMaybePostList().
|
virtual |
Return the weight contribution for the current position.
Implements Xapian::PostingIterator::Internal.
Definition at line 160 of file andmaybepostlist.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 81 of file andmaybepostlist.cc.
References dbsize, BranchPostList::l, lhead, lmax, LOGCALL, LOGLINE, BranchPostList::matcher, Xapian::PostingIterator::Internal::next(), process_next_or_skip_to(), BranchPostList::r, RETURN, rhead, rmax, and skip_to_handling_prune().
Definition at line 33 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::at_end(), check_handling_prune(), Xapian::PostingIterator::Internal::get_docid(), BranchPostList::handle_prune(), BranchPostList::l, lhead, lmax, LOGCALL, BranchPostList::matcher, BranchPostList::r, RETURN, and rhead.
|
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 177 of file andmaybepostlist.cc.
References get_maxweight(), BranchPostList::l, lmax, LOGCALL, 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 97 of file andmaybepostlist.cc.
References dbsize, BranchPostList::l, lhead, lmax, LOGCALL, LOGLINE, BranchPostList::matcher, process_next_or_skip_to(), BranchPostList::r, RETURN, rhead, rmax, Xapian::PostingIterator::Internal::skip_to(), and skip_to_handling_prune().
PostList * AndMaybePostList::sync_rhs | ( | double | w_min | ) |
Synchronise the RHS to the LHS after construction.
Used after constructing from a decomposing OrPostList
Definition at line 62 of file andmaybepostlist.cc.
References Xapian::PostingIterator::Internal::at_end(), check_handling_prune(), Xapian::PostingIterator::Internal::get_docid(), BranchPostList::l, lhead, lmax, LOGCALL, BranchPostList::matcher, BranchPostList::r, RETURN, and rhead.
Referenced by AndMaybePostList(), OrPostList::check(), OrPostList::next(), and OrPostList::skip_to().
|
private |
Definition at line 56 of file andmaybepostlist.h.
|
private |
Definition at line 57 of file andmaybepostlist.h.
Referenced by at_end(), count_matching_subqs(), gather_position_lists(), get_docid(), get_doclength(), get_unique_terms(), get_wdf(), get_weight(), next(), process_next_or_skip_to(), skip_to(), and sync_rhs().
|
private |
Definition at line 58 of file andmaybepostlist.h.
Referenced by get_maxweight(), next(), process_next_or_skip_to(), recalc_maxweight(), skip_to(), and sync_rhs().
|
private |
Definition at line 57 of file andmaybepostlist.h.
Referenced by count_matching_subqs(), gather_position_lists(), get_doclength(), get_unique_terms(), get_wdf(), get_weight(), next(), process_next_or_skip_to(), skip_to(), and sync_rhs().
|
private |
Definition at line 58 of file andmaybepostlist.h.
Referenced by get_maxweight(), next(), recalc_maxweight(), and skip_to().