AyushP123

4th Solution to #734

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