00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef XAPIAN_INCLUDED_MATCHSPY_H
00022 #define XAPIAN_INCLUDED_MATCHSPY_H
00023
00024 #include <xapian/enquire.h>
00025
00026 #include <map>
00027 #include <string>
00028
00029 namespace Xapian {
00030
00032 class XAPIAN_VISIBILITY_DEFAULT MatchSpy : public MatchDecider {
00033 mutable size_t total;
00034
00035 mutable std::map<Xapian::valueno, std::map<std::string, size_t> > categories;
00036
00037 public:
00039 MatchSpy() : total(0) { }
00040
00045 MatchSpy(Xapian::valueno valno) : total(0) {
00046 add_category(valno);
00047 }
00048
00053 void add_category(Xapian::valueno valno) {
00054
00055 (void)categories[valno];
00056 }
00057
00062 bool operator()(const Xapian::Document &doc) const;
00063
00065 size_t get_total() const {
00066 return total;
00067 }
00068
00070 const std::map<std::string, size_t> &
00071 get_categories(Xapian::valueno valno) const {
00072 return categories[valno];
00073 }
00074
00095 double score_categorisation(Xapian::valueno valno,
00096 double desired_no_of_categories = 0.0);
00097
00117 bool build_numeric_ranges(Xapian::valueno valno, size_t max_ranges);
00118 };
00119
00120 }
00121
00122 #endif // XAPIAN_INCLUDED_MATCHSPY_H