xapian-core  1.4.19
Public Member Functions | Private Member Functions | Private Attributes | List of all members
AndNotPostList Class Reference

A postlist generated by taking one postlist (the left-hand postlist), and removing any documents which are in the other (right-hand) postlist. More...

#include <andnotpostlist.h>

+ Inheritance diagram for AndNotPostList:
+ Collaboration diagram for AndNotPostList:

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...
 
 AndNotPostList (PostList *left, PostList *right, MultiMatch *matcher_, Xapian::doccount dbsize_)
 
PostListsync_and_skip_to (Xapian::docid id, double w_min, Xapian::docid lh, Xapian::docid rh)
 
Xapian::termcount get_wdf () const
 get_wdf() for ANDNOT postlists returns the wdf of the left hand side. More...
 
Xapian::termcount count_matching_subqs () const
 Count the number of leaf subqueries which match at the current position. 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...
 
virtual void gather_position_lists (OrPositionList *orposlist)
 Gather PositionList* objects for a subtree. More...
 
- Public Member Functions inherited from Xapian::Internal::intrusive_base
 intrusive_base ()
 Construct with no references. More...
 

Private Member Functions

PostListadvance_to_next_match (double w_min, PostList *ret)
 

Private Attributes

Xapian::docid lhead
 
Xapian::docid rhead
 
Xapian::doccount dbsize
 Number of documents in the database this postlist is across. More...
 

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 generated by taking one postlist (the left-hand postlist), and removing any documents which are in the other (right-hand) postlist.

The weight for a posting is the weight in the left-hand postlist.

Definition at line 35 of file andnotpostlist.h.

Constructor & Destructor Documentation

◆ AndNotPostList()

AndNotPostList::AndNotPostList ( PostList left,
PostList right,
MultiMatch matcher_,
Xapian::doccount  dbsize_ 
)

Definition at line 62 of file andnotpostlist.cc.

References LOGCALL_CTOR.

Member Function Documentation

◆ advance_to_next_match()

PostList * AndNotPostList::advance_to_next_match ( double  w_min,
PostList ret 
)
private

◆ at_end()

bool AndNotPostList::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 201 of file andnotpostlist.cc.

References lhead, LOGCALL, and RETURN.

◆ count_matching_subqs()

Xapian::termcount AndNotPostList::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 235 of file andnotpostlist.cc.

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

◆ get_description()

std::string AndNotPostList::get_description ( ) const
virtual

Return a string description of this object.

Implements Xapian::PostingIterator::Internal.

Definition at line 208 of file andnotpostlist.cc.

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

◆ get_docid()

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

Return the current docid.

Implements Xapian::PostingIterator::Internal.

Definition at line 169 of file andnotpostlist.cc.

References lhead, LOGCALL, and RETURN.

◆ get_doclength()

Xapian::termcount AndNotPostList::get_doclength ( ) const
virtual

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

Implements Xapian::PostingIterator::Internal.

Definition at line 214 of file andnotpostlist.cc.

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

◆ get_maxweight()

double AndNotPostList::get_maxweight ( ) const
virtual

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

Implements Xapian::PostingIterator::Internal.

Definition at line 185 of file andnotpostlist.cc.

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

◆ get_termfreq_est()

Xapian::doccount AndNotPostList::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 119 of file andnotpostlist.cc.

References dbsize, est(), Xapian::PostingIterator::Internal::get_termfreq_est(), BranchPostList::l, LOGCALL, BranchPostList::r, rare, and RETURN.

◆ get_termfreq_est_using_stats()

TermFreqs AndNotPostList::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 133 of file andnotpostlist.cc.

References Assert, Xapian::Weight::Internal::collection_size, 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.

◆ get_termfreq_max()

Xapian::doccount AndNotPostList::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 100 of file andnotpostlist.cc.

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

◆ get_termfreq_min()

Xapian::doccount AndNotPostList::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 108 of file andnotpostlist.cc.

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

◆ get_unique_terms()

Xapian::termcount AndNotPostList::get_unique_terms ( ) const
virtual

Return the number of unique terms in the current document.

Implements Xapian::PostingIterator::Internal.

Definition at line 221 of file andnotpostlist.cc.

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

◆ get_wdf()

Xapian::termcount AndNotPostList::get_wdf ( ) const
virtual

get_wdf() for ANDNOT postlists returns the wdf of the left hand side.

Reimplemented from Xapian::PostingIterator::Internal.

Definition at line 228 of file andnotpostlist.cc.

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

◆ get_weight()

double AndNotPostList::get_weight ( ) const
virtual

Return the weight contribution for the current position.

Implements Xapian::PostingIterator::Internal.

Definition at line 177 of file andnotpostlist.cc.

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

◆ next()

PostList * AndNotPostList::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 73 of file andnotpostlist.cc.

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

◆ recalc_maxweight()

double AndNotPostList::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 192 of file andnotpostlist.cc.

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

◆ skip_to()

PostList * AndNotPostList::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 92 of file andnotpostlist.cc.

References advance_to_next_match(), BranchPostList::l, lhead, LOGCALL, RETURN, and Xapian::PostingIterator::Internal::skip_to().

Referenced by sync_and_skip_to().

◆ sync_and_skip_to()

PostList * AndNotPostList::sync_and_skip_to ( Xapian::docid  id,
double  w_min,
Xapian::docid  lh,
Xapian::docid  rh 
)

Definition at line 80 of file andnotpostlist.cc.

References lhead, LOGCALL, RETURN, rhead, and skip_to().

Member Data Documentation

◆ dbsize

Xapian::doccount AndNotPostList::dbsize
private

Number of documents in the database this postlist is across.

Definition at line 40 of file andnotpostlist.h.

Referenced by get_termfreq_est().

◆ lhead

Xapian::docid AndNotPostList::lhead
private

Definition at line 37 of file andnotpostlist.h.

Referenced by advance_to_next_match(), at_end(), get_docid(), skip_to(), and sync_and_skip_to().

◆ rhead

Xapian::docid AndNotPostList::rhead
private

Definition at line 37 of file andnotpostlist.h.

Referenced by advance_to_next_match(), and sync_and_skip_to().


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