xapian-core  1.4.25
Public Member Functions | Private Member Functions | Private Attributes | List of all members
AndMaybePostList Class Reference

A postlist with weights modified by another postlist. More...

#include <andmaybepostlist.h>

+ Inheritance diagram for AndMaybePostList:
+ Collaboration diagram for AndMaybePostList:

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...
 
PostListnext (double w_min)
 Advance the current position to the next document in the postlist. More...
 
PostListskip_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...
 
PostListsync_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 PositionListread_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 PositionListopen_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 Internalcheck (Xapian::docid did, double w_min, bool &valid)
 Check if the specified docid occurs in this postlist. More...
 
Internalnext ()
 Advance the current position to the next document in the postlist. More...
 
Internalskip_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

PostListprocess_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
PostListl
 Left sub-postlist. More...
 
PostListr
 Right sub-postlist. More...
 
MultiMatchmatcher
 The object which is using this postlist to perform a match. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ AndMaybePostList() [1/2]

AndMaybePostList::AndMaybePostList ( PostList left_,
PostList right_,
MultiMatch matcher_,
Xapian::doccount  dbsize_ 
)
inline

Definition at line 88 of file andmaybepostlist.h.

◆ AndMaybePostList() [2/2]

AndMaybePostList::AndMaybePostList ( PostList left_,
PostList right_,
MultiMatch matcher_,
Xapian::doccount  dbsize_,
Xapian::docid  lhead_,
Xapian::docid  rhead_ 
)
inline

Member Function Documentation

◆ at_end()

bool AndMaybePostList::at_end ( ) const
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.

References lhead, LOGCALL, and RETURN.

◆ count_matching_subqs()

Xapian::termcount AndMaybePostList::count_matching_subqs ( ) const
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().

◆ gather_position_lists()

void AndMaybePostList::gather_position_lists ( OrPositionList orposlist)
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().

◆ get_description()

std::string AndMaybePostList::get_description ( ) const
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.

◆ get_docid()

Xapian::docid AndMaybePostList::get_docid ( ) const
virtual

Return the current docid.

Implements Xapian::PostingIterator::Internal.

Definition at line 151 of file andmaybepostlist.cc.

References Assert, lhead, LOGCALL, and RETURN.

◆ get_doclength()

Xapian::termcount AndMaybePostList::get_doclength ( ) const
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.

◆ get_maxweight()

double AndMaybePostList::get_maxweight ( ) const
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().

◆ get_termfreq_est()

Xapian::doccount AndMaybePostList::get_termfreq_est ( ) const
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.

◆ get_termfreq_est_using_stats()

TermFreqs AndMaybePostList::get_termfreq_est_using_stats ( const Xapian::Weight::Internal stats) const
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.

◆ get_termfreq_max()

Xapian::doccount AndMaybePostList::get_termfreq_max ( ) const
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.

◆ get_termfreq_min()

Xapian::doccount AndMaybePostList::get_termfreq_min ( ) const
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.

◆ get_unique_terms()

Xapian::termcount AndMaybePostList::get_unique_terms ( ) const
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.

◆ get_wdf()

Xapian::termcount AndMaybePostList::get_wdf ( ) const
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().

◆ get_weight()

double AndMaybePostList::get_weight ( ) const
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.

◆ next()

PostList * AndMaybePostList::next ( double  w_min)
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.

Parameters
w_minThe minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore).
Returns
If a non-NULL pointer is returned, then the caller should substitute the returned pointer for its pointer to us, and then delete us. This "pruning" can only happen for a non-leaf subclass of this class.

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().

◆ process_next_or_skip_to()

PostList * AndMaybePostList::process_next_or_skip_to ( double  w_min,
PostList ret 
)
private

◆ recalc_maxweight()

double AndMaybePostList::recalc_maxweight ( )
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.

◆ skip_to()

PostList * AndMaybePostList::skip_to ( Xapian::docid  did,
double  w_min 
)
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).

Parameters
w_minThe minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore).
Returns
If a non-NULL pointer is returned, then the caller should substitute the returned pointer for its pointer to us, and then delete us. This "pruning" can only happen for a non-leaf subclass of this class.

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().

◆ sync_rhs()

PostList * AndMaybePostList::sync_rhs ( double  w_min)

Member Data Documentation

◆ dbsize

Xapian::doccount AndMaybePostList::dbsize
private

Definition at line 56 of file andmaybepostlist.h.

Referenced by next(), and skip_to().

◆ lhead

Xapian::docid AndMaybePostList::lhead
private

◆ lmax

double AndMaybePostList::lmax
private

◆ rhead

Xapian::docid AndMaybePostList::rhead
private

◆ rmax

double AndMaybePostList::rmax
private

Definition at line 58 of file andmaybepostlist.h.

Referenced by get_maxweight(), next(), recalc_maxweight(), and skip_to().


The documentation for this class was generated from the following files: