xapian-core  1.4.21
Public Member Functions | Private Attributes | List of all members
SynonymPostList Class Reference

A postlist comprising several postlists SYNONYMed together. More...

#include <synonympostlist.h>

+ Inheritance diagram for SynonymPostList:
+ Collaboration diagram for SynonymPostList:

Public Member Functions

 SynonymPostList (PostList *subtree_, MultiMatch *matcher_, Xapian::termcount doclen_lower_bound_, bool wdf_disjoint_)
 
 ~SynonymPostList ()
 
void set_weight (const Xapian::Weight *wt_)
 Set the weight object to be used for the synonym postlist. 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...
 
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...
 
Xapian::termcount get_wdf () const
 Return the wdf for the document at the current position. 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...
 
Xapian::doccount get_termfreq_max () const
 Get an upper bound on the number of documents indexed by this term. More...
 
Xapian::docid get_docid () const
 Return the current docid. More...
 
Xapian::termcount get_doclength () const
 Return the length of current document. More...
 
Xapian::termcount get_unique_terms () const
 Return the number of unique terms in the current document. More...
 
bool at_end () const
 Return true if the current position is past the last entry in this list. More...
 
Xapian::termcount count_matching_subqs () const
 Count the number of leaf subqueries which match at the current position. More...
 
std::string get_description () const
 Return a string description of this object. More...
 
- 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 TermFreqs get_termfreq_est_using_stats (const Xapian::Weight::Internal &stats) const
 Get an estimate for the termfreq and reltermfreq, given the stats. 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 Attributes

PostListsubtree
 The subtree, which starts as an OR of all the sub-postlists being joined with Synonym, but may decay into something else. More...
 
MultiMatchmatcher
 The object which is using this postlist to perform a match. More...
 
const Xapian::Weightwt
 Weighting object used for calculating the synonym weights. More...
 
bool want_doclength
 Flag indicating whether the weighting object needs the doclength. More...
 
bool want_wdf
 Flag indicating whether the weighting object needs the wdf. More...
 
bool want_unique_terms
 Flag indicating whether the weighting object needs the number of unique terms. More...
 
bool wdf_disjoint
 Are the subquery's wdf contributions disjoint? More...
 
Xapian::termcount doclen_lower_bound
 Lower bound on doclength in the subdatabase we're working over. More...
 

Additional Inherited Members

- Public Attributes inherited from Xapian::Internal::intrusive_base
unsigned _refs
 Reference count. More...
 
- Protected Member Functions inherited from Xapian::PostingIterator::Internal
 Internal ()
 Only constructable as a base class for derived classes. More...
 

Detailed Description

A postlist comprising several postlists SYNONYMed together.

This postlist returns all postings in the OR of the sub postlists, but returns weights as if they represented a single term. The term frequency portion of the weight is approximated.

Definition at line 34 of file synonympostlist.h.

Constructor & Destructor Documentation

◆ SynonymPostList()

SynonymPostList::SynonymPostList ( PostList subtree_,
MultiMatch matcher_,
Xapian::termcount  doclen_lower_bound_,
bool  wdf_disjoint_ 
)
inline

◆ ~SynonymPostList()

SynonymPostList::~SynonymPostList ( )

Definition at line 31 of file synonympostlist.cc.

References subtree, and wt.

Referenced by SynonymPostList().

Member Function Documentation

◆ at_end()

bool SynonymPostList::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 156 of file synonympostlist.cc.

References Xapian::PostingIterator::Internal::at_end(), LOGCALL, RETURN, and subtree.

Referenced by SynonymPostList().

◆ count_matching_subqs()

Xapian::termcount SynonymPostList::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 162 of file synonympostlist.cc.

Referenced by SynonymPostList().

◆ get_description()

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

Return a string description of this object.

Implements Xapian::PostingIterator::Internal.

Definition at line 168 of file synonympostlist.cc.

References Xapian::PostingIterator::Internal::get_description(), and subtree.

Referenced by SynonymPostList().

◆ get_docid()

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

Return the current docid.

Implements Xapian::PostingIterator::Internal.

Definition at line 138 of file synonympostlist.cc.

References Xapian::PostingIterator::Internal::get_docid(), LOGCALL, RETURN, and subtree.

Referenced by SynonymPostList().

◆ get_doclength()

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

Return the length of current document.

Implements Xapian::PostingIterator::Internal.

Definition at line 144 of file synonympostlist.cc.

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

Referenced by get_weight(), and SynonymPostList().

◆ get_maxweight()

double SynonymPostList::get_maxweight ( ) const
virtual

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

Implements Xapian::PostingIterator::Internal.

Definition at line 100 of file synonympostlist.cc.

References Xapian::Weight::get_maxpart(), LOGCALL, RETURN, and wt.

Referenced by recalc_maxweight(), and SynonymPostList().

◆ get_termfreq_est()

Xapian::doccount SynonymPostList::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 126 of file synonympostlist.cc.

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

Referenced by SynonymPostList().

◆ get_termfreq_max()

Xapian::doccount SynonymPostList::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 132 of file synonympostlist.cc.

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

Referenced by SynonymPostList().

◆ get_termfreq_min()

Xapian::doccount SynonymPostList::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 120 of file synonympostlist.cc.

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

Referenced by SynonymPostList().

◆ get_unique_terms()

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

Return the number of unique terms in the current document.

Implements Xapian::PostingIterator::Internal.

Definition at line 150 of file synonympostlist.cc.

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

Referenced by get_weight(), and SynonymPostList().

◆ get_wdf()

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

Return the wdf for the document at the current position.

The default implementation throws Xapian::UnimplementedError.

Reimplemented from Xapian::PostingIterator::Internal.

Definition at line 114 of file synonympostlist.cc.

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

Referenced by get_weight(), and SynonymPostList().

◆ get_weight()

double SynonymPostList::get_weight ( ) const
virtual

◆ next()

PostList * SynonymPostList::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 48 of file synonympostlist.cc.

References LOGCALL, matcher, next_handling_prune(), RETURN, and subtree.

◆ recalc_maxweight()

double SynonymPostList::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 107 of file synonympostlist.cc.

References get_maxweight(), LOGCALL, and RETURN.

Referenced by SynonymPostList().

◆ set_weight()

void SynonymPostList::set_weight ( const Xapian::Weight wt_)

Set the weight object to be used for the synonym postlist.

Ownership of the weight object passes to the synonym postlist - the caller must not delete it after use.

Definition at line 38 of file synonympostlist.cc.

References Xapian::Weight::get_sumpart_needs_doclength_(), Xapian::Weight::get_sumpart_needs_uniqueterms_(), Xapian::Weight::get_sumpart_needs_wdf_(), want_doclength, want_unique_terms, want_wdf, and wt.

Referenced by SynonymPostList().

◆ skip_to()

PostList * SynonymPostList::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 57 of file synonympostlist.cc.

References LOGCALL, matcher, RETURN, skip_to_handling_prune(), and subtree.

Referenced by SynonymPostList().

Member Data Documentation

◆ doclen_lower_bound

Xapian::termcount SynonymPostList::doclen_lower_bound
private

Lower bound on doclength in the subdatabase we're working over.

Definition at line 71 of file synonympostlist.h.

Referenced by get_weight().

◆ matcher

MultiMatch* SynonymPostList::matcher
private

The object which is using this postlist to perform a match.

This object needs to be notified when the tree changes such that the maximum weights need to be recalculated.

Definition at line 45 of file synonympostlist.h.

Referenced by next(), and skip_to().

◆ subtree

PostList* SynonymPostList::subtree
private

The subtree, which starts as an OR of all the sub-postlists being joined with Synonym, but may decay into something else.

Definition at line 38 of file synonympostlist.h.

Referenced by at_end(), get_description(), get_docid(), get_doclength(), get_termfreq_est(), get_termfreq_max(), get_termfreq_min(), get_unique_terms(), get_wdf(), next(), skip_to(), and ~SynonymPostList().

◆ want_doclength

bool SynonymPostList::want_doclength
private

Flag indicating whether the weighting object needs the doclength.

Definition at line 51 of file synonympostlist.h.

Referenced by get_weight(), and set_weight().

◆ want_unique_terms

bool SynonymPostList::want_unique_terms
private

Flag indicating whether the weighting object needs the number of unique terms.

Definition at line 59 of file synonympostlist.h.

Referenced by get_weight(), and set_weight().

◆ want_wdf

bool SynonymPostList::want_wdf
private

Flag indicating whether the weighting object needs the wdf.

Definition at line 54 of file synonympostlist.h.

Referenced by get_weight(), and set_weight().

◆ wdf_disjoint

bool SynonymPostList::wdf_disjoint
private

Are the subquery's wdf contributions disjoint?

This is true is each wdf from the document contributes at most itself to the wdf of the subquery. That means that the wdf of the subquery can't possibly ever exceed the document length, so we can avoid the need to check and clamp wdf to be <= document length.

Definition at line 68 of file synonympostlist.h.

Referenced by get_weight().

◆ wt

const Xapian::Weight* SynonymPostList::wt
private

Weighting object used for calculating the synonym weights.

Definition at line 48 of file synonympostlist.h.

Referenced by get_maxweight(), get_weight(), set_weight(), and ~SynonymPostList().


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