00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef OM_HGUARD_ORPOSTLIST_H
00026 #define OM_HGUARD_ORPOSTLIST_H
00027
00028 #include "branchpostlist.h"
00029
00037 class OrPostList : public BranchPostList {
00038 private:
00039 Xapian::docid lhead, rhead;
00040 bool lvalid, rvalid;
00041 Xapian::weight lmax, rmax, minmax;
00042 Xapian::doccount dbsize;
00043 public:
00044 Xapian::doccount get_termfreq_max() const;
00045 Xapian::doccount get_termfreq_min() const;
00046 Xapian::doccount get_termfreq_est() const;
00047 TermFreqs get_termfreq_est_using_stats(
00048 const Xapian::Weight::Internal & stats) const;
00049
00050 Xapian::docid get_docid() const;
00051 Xapian::weight get_weight() const;
00052 Xapian::weight get_maxweight() const;
00053
00054 Xapian::weight recalc_maxweight();
00055
00056 PostList *next(Xapian::weight w_min);
00057 PostList *skip_to(Xapian::docid did, Xapian::weight w_min);
00058 PostList *check(Xapian::docid did, Xapian::weight w_min, bool &valid);
00059 bool at_end() const;
00060
00061 std::string get_description() const;
00062
00070 virtual Xapian::termcount get_doclength() const;
00071
00072 OrPostList(PostList * left_,
00073 PostList * right_,
00074 MultiMatch * matcher_,
00075 Xapian::doccount dbsize_);
00076
00081 Xapian::termcount get_wdf() const;
00082
00083 Xapian::termcount count_matching_subqs() const;
00084 };
00085
00086 #endif