Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void
- MSet::Internal::set_new_weights(vector<double>::iterator weights_begin,vector<double>::iterator weights_end) {
- max_attained = INT_MIN;
- while (weights_begin!=weights_end)
- items[i].wt = *weight_begin;
- max_attained = max(max_attained,items[i].wt);
- weight_being++;
- // Dont know what the max_possible should be.
- }
- }
- template <typename Iterator>
- void
- MSet::set_new_weights(Iterator first, Iterator last) {
- set_new_weights_helper(first,last);
- }
- void
- Mset::set_new_weights_helper(vector<double>::iterator weights_begin,vector<double>::iterator weights_end)
- {
- internal->set_new_weights(weights_being,weights_end);
- }
- void
- Ranker::rank(Xapian::MSet & mset, const string & model_key, const Xapian::FeatureList & flist)
- {
- LOGCALL(API, std::vector<Xapian::docid>, "Ranker::rank", mset | model_key | flist);
- std::vector<FeatureVector> fvv = flist.create_feature_vectors(mset, letor_query, Xapian::Database(db_path));
- load_model_from_metadata(model_key);
- std::vector<FeatureVector> rankedfvv = rank_fvv(fvv);/*Not sorted, The FeatureVectors are in the original order of the documents*/
- std::vector<double> weights;
- for (size_t i = 0; i < rankedfvv.size(); ++i) {
- weights.push_back(rankedfvv[i].get_score());
- }
- mset.set_new_weights(weights);
- }
- /* The returned weights can be linearly combined for multiple rankers and then we can call MSet::set_new_weights_and_rerank.
Add Comment
Please, Sign In to add comment