| 
    xapian-core
    1.4.29
    
   | 
 
N-way AND postlist. More...
#include <multiandpostlist.h>
 Inheritance diagram for MultiAndPostList:
 Collaboration diagram for MultiAndPostList:Classes | |
| struct | ComparePostListTermFreqAscending | 
| Comparison functor which orders PostList* by ascending get_termfreq_est().  More... | |
Public Member Functions | |
| template<class RandomItor > | |
| MultiAndPostList (RandomItor pl_begin, RandomItor pl_end, MultiMatch *matcher_, Xapian::doccount db_size_) | |
| Construct from 2 random-access iterators to a container of PostList*, a pointer to the matcher, and the document collection size.  More... | |
| MultiAndPostList (PostList *l, PostList *r, double lmax, double rmax, MultiMatch *matcher_, Xapian::doccount db_size_) | |
| Construct as the decay product of an OrPostList or AndMaybePostList.  More... | |
| ~MultiAndPostList () | |
| Xapian::doccount | get_termfreq_min () const | 
| Get a lower bound on 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::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... | |
| double | get_maxweight () const | 
| Return an upper bound on what get_weight() can return.  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... | |
| double | get_weight () 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... | |
| std::string | get_description () const | 
| Return a string description of this object.  More... | |
| Xapian::termcount | get_wdf () const | 
| get_wdf() for MultiAndPostlists returns the sum of the wdfs of the sub postlists.  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::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 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... | |
  Public Member Functions inherited from Xapian::Internal::intrusive_base | |
| intrusive_base () | |
| Construct with no references.  More... | |
Private Member Functions | |
| void | operator= (const MultiAndPostList &) | 
| Don't allow assignment.  More... | |
| MultiAndPostList (const MultiAndPostList &) | |
| 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 | 
| 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 | 
| Array of pointers to sub-postlists.  More... | |
| double * | max_wt | 
| Array of maximum weights for the sub-postlists.  More... | |
| double | max_total | 
| Total maximum weight (== sum of max_wt values).  More... | |
| Xapian::doccount | db_size | 
| The number of documents in the database.  More... | |
| MultiMatch * | matcher | 
| Pointer to the matcher object, so we can report pruning.  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... | |
N-way AND postlist.
Definition at line 32 of file multiandpostlist.h.
      
  | 
  private | 
Don't allow copying.
Referenced by MultiAndPostList::ComparePostListTermFreqAscending::operator()().
      
  | 
  inline | 
Construct from 2 random-access iterators to a container of PostList*, a pointer to the matcher, and the document collection size.
Definition at line 122 of file multiandpostlist.h.
References allocate_plist_and_max_wt().
      
  | 
  inline | 
Construct as the decay product of an OrPostList or AndMaybePostList.
Definition at line 137 of file multiandpostlist.h.
References allocate_plist_and_max_wt(), at_end(), count_matching_subqs(), gather_position_lists(), get_description(), get_docid(), get_doclength(), get_maxweight(), Xapian::PostingIterator::Internal::get_termfreq_est(), get_termfreq_est(), get_termfreq_est_using_stats(), get_termfreq_max(), get_termfreq_min(), get_unique_terms(), get_wdf(), get_weight(), Xapian::PostingIterator::Internal::next(), recalc_maxweight(), skip_to(), and ~MultiAndPostList().
| MultiAndPostList::~MultiAndPostList | ( | ) | 
Definition at line 43 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  private | 
Allocate plist and max_wt arrays of n_kids each.
| std::bad_alloc. | 
Definition at line 31 of file multiandpostlist.cc.
Referenced by check_helper(), and MultiAndPostList().
      
  | 
  virtual | 
Return true if the current position is past the last entry in this list.
Implements Xapian::PostingIterator::Internal.
Definition at line 191 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  inlineprivate | 
Call check on a sub-postlist n, and handle any pruning.
Definition at line 97 of file multiandpostlist.h.
References allocate_plist_and_max_wt(), Xapian::PostingIterator::Internal::check(), find_next_match(), new_min(), and MultiMatch::recalc_maxweight().
      
  | 
  virtual | 
Count the number of leaf subqueries which match at the current position.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 275 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  private | 
Advance the sublists to the next match.
Definition at line 209 of file multiandpostlist.cc.
References Xapian::PostingIterator::Internal::get_docid().
Referenced by check_helper().
      
  | 
  virtual | 
Gather PositionList* objects for a subtree.
Reimplemented from Xapian::PostingIterator::Internal.
Definition at line 285 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return a string description of this object.
Implements Xapian::PostingIterator::Internal.
Definition at line 252 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return the current docid.
Implements Xapian::PostingIterator::Internal.
Definition at line 152 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return the length of current document.
Implements Xapian::PostingIterator::Internal.
Definition at line 158 of file multiandpostlist.cc.
References Assert, and AssertEq.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return an upper bound on what get_weight() can return.
Implements Xapian::PostingIterator::Internal.
Definition at line 146 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  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 92 of file multiandpostlist.cc.
References Assert, and LOGCALL.
Referenced by get_termfreq_min(), and MultiAndPostList().
      
  | 
  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 108 of file multiandpostlist.cc.
References Assert, Xapian::Weight::Internal::collection_size, TermFreqs::collfreq, if(), LOGCALL, TermFreqs::reltermfreq, RETURN, Xapian::Weight::Internal::rset_size, TermFreqs::termfreq, Xapian::Weight::Internal::total_length, and usual.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Get an upper bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 80 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Get a lower bound on the number of documents indexed by this term.
Implements Xapian::PostingIterator::Internal.
Definition at line 55 of file multiandpostlist.cc.
References AssertRelParanoid, and get_termfreq_est().
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return the number of unique terms in the current document.
Implements Xapian::PostingIterator::Internal.
Definition at line 169 of file multiandpostlist.cc.
References Assert, and AssertEq.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
get_wdf() for MultiAndPostlists 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::PostingIterator::Internal.
Definition at line 265 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  virtual | 
Return the weight contribution for the current position.
Implements Xapian::PostingIterator::Internal.
Definition at line 180 of file multiandpostlist.cc.
References Assert.
Referenced by MultiAndPostList().
      
  | 
  inlineprivate | 
Calculate the new minimum weight for sub-postlist n.
Definition at line 70 of file multiandpostlist.h.
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::PostingIterator::Internal.
Definition at line 238 of file multiandpostlist.cc.
      
  | 
  inlineprivate | 
Call next on a sub-postlist n, and handle any pruning.
Definition at line 75 of file multiandpostlist.h.
References new_min(), Xapian::PostingIterator::Internal::next(), and MultiMatch::recalc_maxweight().
      
  | 
  private | 
Don't allow assignment.
Referenced by MultiAndPostList::ComparePostListTermFreqAscending::operator()().
      
  | 
  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 197 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  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 245 of file multiandpostlist.cc.
Referenced by MultiAndPostList().
      
  | 
  inlineprivate | 
Call skip_to on a sub-postlist n, and handle any pruning.
Definition at line 86 of file multiandpostlist.h.
References new_min(), MultiMatch::recalc_maxweight(), and Xapian::PostingIterator::Internal::skip_to().
      
  | 
  private | 
The number of documents in the database.
Definition at line 64 of file multiandpostlist.h.
      
  | 
  private | 
The current docid, or zero if we haven't started or are at_end.
Definition at line 49 of file multiandpostlist.h.
      
  | 
  private | 
Pointer to the matcher object, so we can report pruning.
Definition at line 67 of file multiandpostlist.h.
      
  | 
  private | 
Total maximum weight (== sum of max_wt values).
Definition at line 61 of file multiandpostlist.h.
      
  | 
  private | 
Array of maximum weights for the sub-postlists.
Definition at line 58 of file multiandpostlist.h.
      
  | 
  private | 
The number of sub-postlists.
Definition at line 52 of file multiandpostlist.h.
      
  | 
  private | 
Array of pointers to sub-postlists.
Definition at line 55 of file multiandpostlist.h.