AyushP123

solution to #734

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