Expose statistics to user defined Xapian::Weight subclasses
|Reported by:||Richard Boulton||Owned by:||Olly Betts|
|Component:||Library API||Version:||SVN trunk|
|Cc:||Olly Betts||Blocked By:|
Description (last modified by )
Currently, The Xapian::Weight::Internal class (which is, as of last night, the class holding the statistics for the whole collection used by the weight objects) is not publically visible. This means that it would be impossible, for example, for a user to write a weighting class equivalent to, say, the BM25Weight class, using the public API, because the statistics aren't available.
After cleaning up the weighting calculation system, I believe the Xapian::Weight::Internal class is now nearly clean enough that it could reasonably be made public, allowing custom weighting classes access to all the statistics currently available.
We might want to make the termfreq and reltermfreq members private, since they're likely to be accessed mainly through the accessor functions anyway. Also we might want to combine them into a single map with entries holding both the termfreq and the reltermfreq, since it's usual to want to access both the termfreq and the reltermfreq for a particular term at the same time.
Also, we might want to call the class Xapian::Stats, instead of Xapian::Weight::Internal, to reflect the Stats being part of the public API, but this would require an ABI change, so would have to wait for 1.1.0. (We could keep the API compatible by making Xapian::Weight::Internal a typedef for Xapian::Stats, I think; currently Stats (with no namespace) is a typedef for Xapian::Weight::Internal).
Change History (13)
comment:6 by , 15 years ago
|Operating System:||→ All|
|Summary:||Make Xapian::Weight::Internal part of the public API → Expose statistics to user defined Xapian::Weight subclasses|