xapian-core
1.4.27
|
A postlist comprising several postlists SYNONYMed together. More...
#include <synonympostlist.h>
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... | |
PostList * | next (double w_min) |
Advance the current position to the next document in the postlist. More... | |
PostList * | skip_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 PositionList * | read_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 PositionList * | open_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 Internal * | check (Xapian::docid did, double w_min, bool &valid) |
Check if the specified docid occurs in this postlist. More... | |
Internal * | next () |
Advance the current position to the next document in the postlist. More... | |
Internal * | skip_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 | |
PostList * | subtree |
The subtree, which starts as an OR of all the sub-postlists being joined with Synonym, but may decay into something else. More... | |
MultiMatch * | matcher |
The object which is using this postlist to perform a match. More... | |
const Xapian::Weight * | wt |
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... | |
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.
|
inline |
Definition at line 74 of file synonympostlist.h.
References at_end(), count_matching_subqs(), get_description(), get_docid(), get_doclength(), get_maxweight(), get_termfreq_est(), get_termfreq_max(), get_termfreq_min(), get_unique_terms(), get_wdf(), get_weight(), Xapian::PostingIterator::Internal::next(), recalc_maxweight(), set_weight(), skip_to(), and ~SynonymPostList().
SynonymPostList::~SynonymPostList | ( | ) |
Definition at line 31 of file synonympostlist.cc.
Referenced by SynonymPostList().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
virtual |
Return the weight contribution for the current position.
Implements Xapian::PostingIterator::Internal.
Definition at line 66 of file synonympostlist.cc.
References AssertRel, doclen_lower_bound, get_doclength(), Xapian::Weight::get_maxpart(), Xapian::Weight::get_sumpart(), get_unique_terms(), get_wdf(), LOGCALL, RETURN, want_doclength, want_unique_terms, want_wdf, wdf_disjoint, and wt.
Referenced by SynonymPostList().
|
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.
w_min | The minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore). |
Implements Xapian::PostingIterator::Internal.
Definition at line 48 of file synonympostlist.cc.
References LOGCALL, matcher, next_handling_prune(), RETURN, and subtree.
|
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().
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().
|
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).
w_min | The minimum weight contribution that is needed (this is just a hint which PostList subclasses may ignore). |
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().
|
private |
Lower bound on doclength in the subdatabase we're working over.
Definition at line 71 of file synonympostlist.h.
Referenced by get_weight().
|
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.
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().