AndMaybePostList Class Reference

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

#include <andmaybepostlist.h>

Inheritance diagram for AndMaybePostList:

Inheritance graph
[legend]
Collaboration diagram for AndMaybePostList:

Collaboration graph
[legend]

List of all members.

Public Member Functions

Xapian::doccount get_termfreq_max () const
 Get an upper bound on the number of documents indexed by this term.
Xapian::doccount get_termfreq_min () const
 Get a lower bound on the number of documents indexed by this term.
Xapian::doccount get_termfreq_est () const
 Get an estimate of the number of documents indexed by this term.
TermFreqs get_termfreq_est_using_stats (const Xapian::Weight::Internal &stats) const
 Get an estimate for the termfreq and reltermfreq, given the stats.
Xapian::docid get_docid () const
 Return the current docid.
Xapian::weight get_weight () const
 Return the weight contribution for the current position.
Xapian::weight get_maxweight () const
 Return an upper bound on what get_weight() can return.
Xapian::weight recalc_maxweight ()
 Recalculate the upper bound on what get_weight() can return.
PostListnext (Xapian::weight w_min)
 Advance the current position to the next document in the postlist.
PostListskip_to (Xapian::docid did, Xapian::weight w_min)
 Skip forward to the specified docid.
bool at_end () const
 Return true if the current position is past the last entry in this list.
std::string get_description () const
 Return a string description of this object.
virtual Xapian::termcount get_doclength () const
 Return the document length of the document the current term comes from.
 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.
PostListsync_rhs (Xapian::weight w_min)
 Synchronise the RHS to the LHS after construction.
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.
Xapian::termcount count_matching_subqs () const
 Count the number of leaf subqueries which match at the current position.

Private Member Functions

PostListprocess_next_or_skip_to (Xapian::weight w_min, PostList *ret)

Private Attributes

Xapian::doccount dbsize
Xapian::docid lhead
Xapian::docid rhead
Xapian::weight lmax
Xapian::weight rmax


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 53 of file andmaybepostlist.h.


Constructor & Destructor Documentation

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

Definition at line 85 of file andmaybepostlist.h.

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

Constructor for use by decomposing OrPostList.

Definition at line 96 of file andmaybepostlist.h.

References Xapian::PostingIterator::Internal::get_maxweight(), BranchPostList::l, lmax, BranchPostList::r, and rmax.


Member Function Documentation

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 185 of file andmaybepostlist.cc.

References lhead, LOGCALL, and RETURN.

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 216 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::count_matching_subqs(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.

std::string AndMaybePostList::get_description (  )  const [virtual]

Return a string description of this object.

Implements Xapian::PostingIterator::Internal.

Definition at line 192 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_description(), BranchPostList::l, and BranchPostList::r.

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

Return the current docid.

Implements Xapian::PostingIterator::Internal.

Definition at line 150 of file andmaybepostlist.cc.

References Assert, lhead, LOGCALL, and RETURN.

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 199 of file andmaybepostlist.cc.

References Assert, AssertEq, Xapian::PostingIterator::Internal::get_doclength(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.

Xapian::weight AndMaybePostList::get_maxweight (  )  const [virtual]

Return an upper bound on what get_weight() can return.

Implements Xapian::PostingIterator::Internal.

Definition at line 169 of file andmaybepostlist.cc.

References lmax, LOGCALL, RETURN, and rmax.

Referenced by recalc_maxweight().

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 133 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_termfreq_est(), BranchPostList::l, LOGCALL, and RETURN.

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 141 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_termfreq_est_using_stats(), BranchPostList::l, LOGCALL, and RETURN.

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 117 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_termfreq_max(), BranchPostList::l, LOGCALL, and RETURN.

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 125 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_termfreq_min(), BranchPostList::l, LOGCALL, and RETURN.

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 208 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::get_wdf(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.

Xapian::weight AndMaybePostList::get_weight (  )  const [virtual]

Return the weight contribution for the current position.

Implements Xapian::PostingIterator::Internal.

Definition at line 159 of file andmaybepostlist.cc.

References Assert, Xapian::PostingIterator::Internal::get_weight(), BranchPostList::l, lhead, LOGCALL, BranchPostList::r, RETURN, and rhead.

PostList * AndMaybePostList::next ( Xapian::weight  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() must be called before any methods which need the context of the current position.

Parameters:
w_min The 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 80 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().

PostList * AndMaybePostList::process_next_or_skip_to ( Xapian::weight  w_min,
PostList ret 
) [private]

Xapian::weight 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 176 of file andmaybepostlist.cc.

References get_maxweight(), BranchPostList::l, lmax, LOGCALL, BranchPostList::r, Xapian::PostingIterator::Internal::recalc_maxweight(), RETURN, and rmax.

PostList * AndMaybePostList::skip_to ( Xapian::docid  ,
Xapian::weight  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_min The 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 96 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 ( Xapian::weight  w_min  ) 


Member Data Documentation

Definition at line 55 of file andmaybepostlist.h.

Referenced by next(), and skip_to().

Definition at line 57 of file andmaybepostlist.h.

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


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

Documentation for Xapian (version 1.2.8).
Generated on 14 Dec 2011 by Doxygen 1.5.9.