|
xapian-core
2.0.0
|
N-way AND postlist. More...
#include <andpostlist.h>
Inheritance diagram for AndPostList:
Collaboration diagram for AndPostList:Classes | |
| struct | ComparePostListTermFreqAscending |
| Comparison functor which orders PostList* by ascending get_termfreq(). More... | |
Public Member Functions | |
| template<class RandomItor > | |
| AndPostList (RandomItor pl_begin, RandomItor pl_end, PostListTree *matcher_) | |
| Construct from 2 random-access iterators to a container of PostList* and a pointer to the matcher. More... | |
| AndPostList (PostList *l, PostList *r, double lmax, double rmax, PostListTree *matcher_, Xapian::doccount termfreq_) | |
| Construct as the decay product of an OrPostList or AndMaybePostList. More... | |
| ~AndPostList () | |
| Xapian::docid | get_docid () const |
| Return the current docid. More... | |
| double | get_weight (Xapian::termcount doclen, Xapian::termcount unique_terms, Xapian::termcount wdfdocmax) const |
| Return the weight contribution for the current position. More... | |
| bool | at_end () const |
| Return true if the current position is past the last entry in this list. More... | |
| double | recalc_maxweight () |
| Recalculate the upper bound on what get_weight() can return. More... | |
| PostList * | next (double w_min) |
| Advance the current position to the next document in the postlist. More... | |
| PostList * | skip_to (Xapian::docid, double w_min) |
| Skip forward to the specified docid. More... | |
| void | get_docid_range (Xapian::docid &first, Xapian::docid &last) const |
| Get the bounds on the range of docids this PostList can return. More... | |
| std::string | get_description () const |
| Return a string description of this object. More... | |
| Xapian::termcount | get_wdf () const |
| Get the within-document frequency. More... | |
| Xapian::termcount | count_matching_subqs () const |
| Count the number of leaf subqueries which match at the current position. More... | |
| void | gather_position_lists (OrPositionList *orposlist) |
| Gather PositionList* objects for a subtree. More... | |
Public Member Functions inherited from Xapian::Internal::PostList | |
| virtual | ~PostList () |
| 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... | |
| Xapian::doccount | get_termfreq () const |
| Get an estimate of the number of documents this PostList will return. 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 PostList * | check (Xapian::docid did, double w_min, bool &valid) |
| Check if the specified docid occurs in this postlist. More... | |
| PostList * | next () |
| Advance the current position to the next document in the postlist. More... | |
| PostList * | skip_to (Xapian::docid did) |
| Skip forward to the specified docid. More... | |
Private Member Functions | |
| AndPostList & | operator= (const AndPostList &)=delete |
| Don't allow assignment. More... | |
| AndPostList (const AndPostList &)=delete | |
| Don't allow copying. More... | |
| double | new_min (double w_min, size_t n) |
| Calculate the new minimum weight for sub-postlist n. More... | |
| void | next_helper (size_t n, double w_min) |
| Call next on a sub-postlist n, and handle any pruning. More... | |
| void | skip_to_helper (size_t n, Xapian::docid did_min, double w_min) |
| Call skip_to on a sub-postlist n, and handle any pruning. More... | |
| void | check_helper (size_t n, Xapian::docid did_min, double w_min, bool &valid) |
| Call check on a sub-postlist n, and handle any pruning. More... | |
| void | allocate_plist_and_max_wt () |
| Allocate plist and max_wt arrays of n_kids each. More... | |
| PostList * | find_next_match (double w_min) |
| Advance the sublists to the next match. More... | |
Private Attributes | |
| Xapian::docid | did = 0 |
| The current docid, or zero if we haven't started or are at_end. More... | |
| size_t | n_kids |
| The number of sub-postlists. More... | |
| PostList ** | plist = nullptr |
| Array of pointers to sub-postlists. More... | |
| double * | max_wt = nullptr |
| Array of maximum weights for the sub-postlists. More... | |
| double | max_total = 0.0 |
| Total maximum weight (== sum of max_wt values). More... | |
| PostListTree * | matcher |
| Pointer to the matcher object, so we can report pruning. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Xapian::Internal::PostList | |
| PostList () | |
| Only constructable as a base class for derived classes. More... | |
Protected Attributes inherited from Xapian::Internal::PostList | |
| Xapian::doccount | termfreq |
| Estimate of the number of documents this PostList will return. More... | |
N-way AND postlist.
Definition at line 32 of file andpostlist.h.
|
privatedelete |
Don't allow copying.
|
inline |
Construct from 2 random-access iterators to a container of PostList* and a pointer to the matcher.
Definition at line 119 of file andpostlist.h.
References allocate_plist_and_max_wt(), Assert, Xapian::Internal::PostList::get_docid_range(), get_docid_range(), Xapian::Internal::PostList::get_termfreq(), n_kids, plist, rare, and Xapian::Internal::PostList::termfreq.
|
inline |
Construct as the decay product of an OrPostList or AndMaybePostList.
Definition at line 154 of file andpostlist.h.
References allocate_plist_and_max_wt(), Xapian::Internal::PostList::get_termfreq(), max_wt, plist, and Xapian::Internal::PostList::termfreq.
| AndPostList::~AndPostList | ( | ) |
Definition at line 44 of file andpostlist.cc.
|
private |
Allocate plist and max_wt arrays of n_kids each.
| std::bad_alloc. |
Definition at line 32 of file andpostlist.cc.
Referenced by AndPostList().
|
virtual |
Return true if the current position is past the last entry in this list.
Implements Xapian::Internal::PostList.
Definition at line 75 of file andpostlist.cc.
|
inlineprivate |
Call check on a sub-postlist n, and handle any pruning.
Definition at line 94 of file andpostlist.h.
References Xapian::Internal::PostList::check(), PostListTree::force_recalc(), matcher, max_wt, new_min(), and plist.
|
virtual |
Count the number of leaf subqueries which match at the current position.
Reimplemented from Xapian::Internal::PostList.
Definition at line 172 of file andpostlist.cc.
|
private |
Advance the sublists to the next match.
Definition at line 93 of file andpostlist.cc.
References Xapian::Internal::PostList::get_docid().
|
virtual |
Gather PositionList* objects for a subtree.
Reimplemented from Xapian::Internal::PostList.
Definition at line 182 of file andpostlist.cc.
|
virtual |
Return a string description of this object.
Implements Xapian::Internal::PostList.
Definition at line 149 of file andpostlist.cc.
|
virtual |
Return the current docid.
Implements Xapian::Internal::PostList.
Definition at line 56 of file andpostlist.cc.
|
virtual |
Get the bounds on the range of docids this PostList can return.
| [out] | first | Set to a lower bound on the docids that can be returned, or not changed if there's no known lower bound (other than 1). |
| [out] | last | Set to an upper bound on the docids that can be returned, or not changed if there's no known upper bound (other than the highest used docid). |
The default implementation (PostList::get_docid_range()) does nothing, which is suitable when there's no known lower or upper bound.
Reimplemented from Xapian::Internal::PostList.
Definition at line 136 of file andpostlist.cc.
Referenced by AndPostList().
|
virtual |
Get the within-document frequency.
For AndPostlist returns the sum of the wdfs of the sub postlists.
The wdf isn't really meaningful in many situations, but if the lists are being combined as a synonym we want the sum of the wdfs, so we do that in general.
Reimplemented from Xapian::Internal::PostList.
Definition at line 162 of file andpostlist.cc.
|
virtual |
Return the weight contribution for the current position.
Implements Xapian::Internal::PostList.
Definition at line 62 of file andpostlist.cc.
References Assert.
|
inlineprivate |
Calculate the new minimum weight for sub-postlist n.
Definition at line 67 of file andpostlist.h.
References max_total, and max_wt.
Referenced by check_helper(), next_helper(), and skip_to_helper().
|
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::Internal::PostList.
Definition at line 122 of file andpostlist.cc.
|
inlineprivate |
Call next on a sub-postlist n, and handle any pruning.
Definition at line 72 of file andpostlist.h.
References PostListTree::force_recalc(), matcher, max_wt, new_min(), Xapian::Internal::PostList::next(), and plist.
|
privatedelete |
Don't allow assignment.
|
virtual |
Recalculate the upper bound on what get_weight() can return.
The maximum weight that get_weight() can return can decrease as the match progresses (typically when the PostList tree prunes) - calling this method calculates a current upper bound.
Note that this method may be called after the postlist has reached the end. In this situation, the method should return 0.
Implements Xapian::Internal::PostList.
Definition at line 81 of file andpostlist.cc.
|
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::Internal::PostList.
Definition at line 129 of file andpostlist.cc.
|
inlineprivate |
Call skip_to on a sub-postlist n, and handle any pruning.
Definition at line 83 of file andpostlist.h.
References PostListTree::force_recalc(), matcher, max_wt, new_min(), plist, and Xapian::Internal::PostList::skip_to().
|
private |
The current docid, or zero if we haven't started or are at_end.
Definition at line 49 of file andpostlist.h.
|
private |
Pointer to the matcher object, so we can report pruning.
Definition at line 64 of file andpostlist.h.
Referenced by check_helper(), next_helper(), and skip_to_helper().
|
private |
Total maximum weight (== sum of max_wt values).
Definition at line 61 of file andpostlist.h.
Referenced by new_min().
|
private |
Array of maximum weights for the sub-postlists.
Definition at line 58 of file andpostlist.h.
Referenced by AndPostList(), check_helper(), new_min(), next_helper(), and skip_to_helper().
|
private |
The number of sub-postlists.
Definition at line 52 of file andpostlist.h.
Referenced by AndPostList().
|
private |
Array of pointers to sub-postlists.
Definition at line 55 of file andpostlist.h.
Referenced by AndPostList(), check_helper(), next_helper(), and skip_to_helper().