38 IfB2Weight::IfB2Weight(
double c)
70 if (wdfn_upper == 0) {
82 double idf_max = log2((N + 1.0) / (F + 0.5));
92 double max_wdfn_product_B = wdfn_upper *
B_constant / (wdfn_upper + 1.0);
112 const char *ptr = s.data();
113 const char *end = ptr + s.size();
115 if (
rare(ptr != end))
124 if (wdf == 0)
return 0.0;
128 double wdfn_product_B = wdfn *
B_constant / (wdfn + 1.0);
149 const char*
p = params;
This class implements the IfB2 weighting scheme.
IfB2Weight * unserialise(const std::string &serialised) const
Unserialise parameters.
double get_sumpart(Xapian::termcount wdf, Xapian::termcount doclen, Xapian::termcount uniqterm, Xapian::termcount wdfdocmax) const
Calculate the weight contribution for this object's term to a document.
double upper_bound
The upper bound on the weight.
std::string serialise() const
Return this object's parameters serialised as a single string.
double param_c
The wdf normalization parameter in the formula.
std::string name() const
Return the name of this weighting scheme, e.g.
double get_maxpart() const
Return an upper bound on what get_sumpart() can return for any document.
IfB2Weight * create_from_parameters(const char *params) const
Create from a human-readable parameter string.
double wqf_product_idf
The constant values which are used for calculations in get_sumpart().
void init(double factor)
Allow the subclass to perform any initialisation it needs to.
IfB2Weight * clone() const
Clone this object.
InvalidArgumentError indicates an invalid parameter value was passed to the API.
Indicates an error in the std::string serialisation of an object.
static void parameter_error(const char *msg, const std::string &scheme, const char *params)
static bool double_param(const char **p, double *ptr_val)
Xapian::termcount get_doclength_lower_bound() const
A lower bound on the minimum length of any document in the shard.
Xapian::doccount get_termfreq() const
The number of documents which this term indexes.
void need_stat(stat_flags flag)
Tell Xapian that your subclass will want a particular statistic.
Xapian::termcount get_wqf() const
The within-query-frequency of this term.
Xapian::termcount get_collection_freq() const
The collection frequency of the term.
Xapian::doccount get_collection_size() const
The number of documents in the collection.
Xapian::doclength get_average_length() const
The average length of a document in the collection.
@ AVERAGE_LENGTH
Average length of documents in the collection.
@ DOC_LENGTH
Length of the current document (sum wdf).
@ TERMFREQ
How many documents the current term is in.
@ WQF
Within-query-frequency of the current term.
@ COLLECTION_SIZE
Number of documents in the collection.
@ WDF_MAX
Upper bound on wdf.
@ DOC_LENGTH_MIN
Lower bound on (non-zero) document lengths.
@ COLLECTION_FREQ
Sum of wdf over the whole collection for the current term.
@ WDF
Within-document-frequency of the current term in the current document.
Xapian::termcount get_wdf_upper_bound() const
An upper bound on the wdf of this term in the shard.
Hierarchy of classes which Xapian can throw as exceptions.
The Xapian namespace contains public interfaces for the Xapian library.
unsigned XAPIAN_TERMCOUNT_BASE_TYPE termcount
A counts of terms.
static void parameter_error(const char *message, const char *params)
string serialise_double(double v)
Serialise a double to a string.
double unserialise_double(const char **p, const char *end)
Unserialise a double serialised by serialise_double.
functions to serialise and unserialise a double
Xapian::Weight::Internal class, holding database and term statistics.