AyushP123

2nd solution to #734

Jun 1st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. void
  2. MSet::Internal::set_new_weights(vector<double> weights) {  
  3.     for (int i=0;i<weights.size();++i) {
  4.         Xapian::Mset::Internal temp(weights[i],items[i].did,items[i].collapse_key,items[i].collapse_count);
  5.         temp.sort_key = items[i].sort_key;
  6.         items[i].swap(temp);
  7.     }
  8. std::sort(items.begin(),items.end(),comparator); //comparator compares the weight of the items.
  9. }
  10.  
  11. template <typename Iterator>
  12. void
  13. MSet::set_new_weights(Iterator first, Iterator last) {
  14.    internal->set_new_weights(vector<double> (first,last));
  15. }
  16.  
  17. void
  18. Ranker::rank(Xapian::MSet & mset, const string & model_key, const Xapian::FeatureList & flist)
  19. {
  20.     LOGCALL(API, std::vector<Xapian::docid>, "Ranker::rank", mset | model_key | flist);
  21.     std::vector<FeatureVector> fvv = flist.create_feature_vectors(mset, letor_query, Xapian::Database(db_path));
  22.     load_model_from_metadata(model_key);
  23.     std::vector<FeatureVector> rankedfvv = rank_fvv(fvv);/*Not sorted the FeatureVectors are in the original order of the  documents*/
  24.  
  25.     std::vector<double> weights;
  26.     for (size_t i = 0; i < rankedfvv.size(); ++i) {
  27.         weights.push_back(rankedfvv[i].get_score());
  28.     }
  29.    
  30.     mset.set_new_weights(weights.begin(),weights.end());
  31. }
Add Comment
Please, Sign In to add comment