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.
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::doclength 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.

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


Constructor & Destructor Documentation

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

Definition at line 83 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 94 of file andmaybepostlist.h.

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


Member Function Documentation

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

Definition at line 31 of file andmaybepostlist.cc.

References Xapian::PostingIterator::Internal::at_end(), DEBUGCALL, Xapian::PostingIterator::Internal::get_docid(), BranchPostList::handle_prune(), BranchPostList::l, lhead, lmax, BranchPostList::matcher, BranchPostList::r, RETURN, rhead, and skip_to_handling_prune().

Referenced by next(), and skip_to().

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

References DEBUGCALL, Xapian::PostingIterator::Internal::get_termfreq_max(), BranchPostList::l, 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 100 of file andmaybepostlist.cc.

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

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

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

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

Return the current docid.

Implements Xapian::PostingIterator::Internal.

Definition at line 116 of file andmaybepostlist.cc.

References Assert, DEBUGCALL, lhead, 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 125 of file andmaybepostlist.cc.

References Assert, DEBUGCALL, Xapian::PostingIterator::Internal::get_weight(), BranchPostList::l, lhead, 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 135 of file andmaybepostlist.cc.

References DEBUGCALL, lmax, RETURN, and rmax.

Referenced by recalc_maxweight().

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.

Implements Xapian::PostingIterator::Internal.

Definition at line 142 of file andmaybepostlist.cc.

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

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

References dbsize, DEBUGCALL, DEBUGLINE, BranchPostList::l, lhead, lmax, BranchPostList::matcher, Xapian::PostingIterator::Internal::next(), process_next_or_skip_to(), BranchPostList::r, RETURN, rhead, rmax, and skip_to_handling_prune().

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

References dbsize, DEBUGCALL, DEBUGLINE, BranchPostList::l, lhead, lmax, BranchPostList::matcher, process_next_or_skip_to(), BranchPostList::r, RETURN, rhead, rmax, Xapian::PostingIterator::Internal::skip_to(), and skip_to_handling_prune().

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

References DEBUGCALL, lhead, and RETURN.

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

Return a string description of this object.

Implements Xapian::PostingIterator::Internal.

Definition at line 158 of file andmaybepostlist.cc.

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

Xapian::doclength AndMaybePostList::get_doclength (  )  const [virtual]

Return the document length of the document the current term comes from.

Implements Xapian::PostingIterator::Internal.

Definition at line 165 of file andmaybepostlist.cc.

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


Member Data Documentation

Xapian::doccount AndMaybePostList::dbsize [private]

Definition at line 56 of file andmaybepostlist.h.

Referenced by next(), and skip_to().

Xapian::docid AndMaybePostList::lhead [private]

Definition at line 57 of file andmaybepostlist.h.

Referenced by at_end(), get_docid(), get_doclength(), get_weight(), next(), process_next_or_skip_to(), and skip_to().

Xapian::docid AndMaybePostList::rhead [private]

Definition at line 57 of file andmaybepostlist.h.

Referenced by get_docid(), get_doclength(), get_weight(), next(), process_next_or_skip_to(), and skip_to().

Xapian::weight AndMaybePostList::lmax [private]

Definition at line 58 of file andmaybepostlist.h.

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

Xapian::weight AndMaybePostList::rmax [private]

Definition at line 58 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.0.10).
Generated on 24 Dec 2008 by Doxygen 1.5.2.