00001 00004 /* Copyright (C) 2007 Olly Betts 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License as 00008 * published by the Free Software Foundation; either version 2 of the 00009 * License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00019 */ 00020 00021 #ifndef XAPIAN_INCLUDED_SCALEWEIGHT_H 00022 #define XAPIAN_INCLUDED_SCALEWEIGHT_H 00023 00024 #include <xapian/enquire.h> 00025 00027 class ScaleWeight : public Xapian::Weight { 00028 Xapian::Weight * real_wt; 00029 00030 double factor; 00031 00032 public: 00033 ScaleWeight * clone() const; 00034 ScaleWeight(Xapian::Weight * real_wt_, double factor_) 00035 : real_wt(real_wt_), factor(factor_) { } 00036 ~ScaleWeight(); 00037 std::string name() const; 00038 std::string serialise() const; 00039 ScaleWeight * unserialise(const std::string & s) const; 00040 Xapian::weight get_sumpart(Xapian::termcount wdf, Xapian::doclength len) const; 00041 Xapian::weight get_maxpart() const; 00042 00043 Xapian::weight get_sumextra(Xapian::doclength len) const; 00044 Xapian::weight get_maxextra() const; 00045 00046 bool get_sumpart_needs_doclength() const; 00047 }; 00048 00049 #endif // XAPIAN_INCLUDED_SCALEWEIGHT_H