From 857fe6d2829a9f0caf1b55aca8ec28ed1c52f01f Mon Sep 17 00:00:00 2001 From: skip Date: Sat, 12 Nov 2022 22:24:19 +0100 Subject: [PATCH] Alternative prev_click_rank() and get_last_click_rank() implementation. --- data/search.cpp | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/data/search.cpp b/data/search.cpp index 11c7bbd..dca848b 100644 --- a/data/search.cpp +++ b/data/search.cpp @@ -77,11 +77,10 @@ std::vector& SearchSession::get_sr() { int SearchSession::get_last_click_rank() { int last_click_rank{10}; - for (auto asr: this->sr) - { - if (asr.get_click() == 1) - { - last_click_rank = asr.get_doc_rank(); + for (int rank = 9; rank >= 0; --rank) { + if (this->sr[rank].get_click() == 1) { + last_click_rank = rank; + break; } } return last_click_rank; @@ -100,26 +99,15 @@ int SearchSession::get_num_clicks() { } std::array SearchSession::prev_clicked_rank() { - std::vector prev_clicks; std::array prev_click_rank{0}; std::array clicks = this->get_clicks(); + int last_click_rank{9}; - for (int rank_cnt{0}; rank_cnt < 10; rank_cnt++){ - int max_itr_rank = rank_cnt; - int itr{0}; - std::vector temp_clicks; - for (auto a_click: clicks){ - if (itr < max_itr_rank){ - if (a_click == 1){ - temp_clicks.push_back(itr); - } - itr++; - } - } - if (!temp_clicks.empty()){ - prev_click_rank[rank_cnt] = temp_clicks.back(); - } else{ - prev_click_rank[rank_cnt] = 9; + for (int rank = 0; rank < 10; rank++) { + prev_click_rank[rank] = last_click_rank; + + if (clicks[rank] == 1) { + last_click_rank = rank; } }