From fa0a2a43a271bb0794380684bf74f0627472e65a Mon Sep 17 00:00:00 2001 From: user12986714 <65436504+user12986714@users.noreply.github.com> Date: Mon, 25 Jan 2021 22:02:52 +0000 Subject: [PATCH 1/9] Eliminate unnecessary SQL queries in search --- app/controllers/search_controller.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index e2452dea8..79d382a74 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -64,7 +64,6 @@ def index end @results = @results.where(search_string.join(params[:or_search].present? ? ' OR ' : ' AND '), **search_params) - .paginate(page: params[:page], per_page: per_page) .order(Arel.sql('`posts`.`created_at` DESC')) @results = @results.includes(:reasons).includes(:feedbacks) if params[:option].nil? @@ -127,14 +126,24 @@ def index @counts_by_feedback = %i[is_tp is_fp is_naa].each_with_index.map do |symbol, i| [symbol, @counts_by_accuracy_group.select { |k, _v| k[i] }.values.sum] end.to_h + @total_count = @counts_by_accuracy_group.values.sum case params[:feedback_filter] when 'tp' @results = @results.where(is_tp: true) + .paginate(page: params[:page], per_page: per_page, + total_entries: @counts_by_feedback[:is_tp]) when 'fp' @results = @results.where(is_fp: true) + .paginate(page: params[:page], per_page: per_page, + total_entries: @counts_by_feedback[:is_fp]) when 'naa' @results = @results.where(is_naa: true) + .paginate(page: params[:page], per_page: per_page, + total_entries: @counts_by_feedback[:is_naa]) + else + @results = @results.paginate(page: params[:page], per_page: per_page, + total_entries: @total_count) end @sites = Site.where(id: @results.map(&:site_id)).to_a unless params[:option] == 'graphs' From 282cedb3e10fb227af1490c396852a1e2091c49f Mon Sep 17 00:00:00 2001 From: user12986714 <65436504+user12986714@users.noreply.github.com> Date: Mon, 25 Jan 2021 22:04:49 +0000 Subject: [PATCH 2/9] Move total result count logic to the controller --- app/views/search/search.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/search/search.html.erb b/app/views/search/search.html.erb index 17517be50..9d84276dc 100644 --- a/app/views/search/search.html.erb +++ b/app/views/search/search.html.erb @@ -98,7 +98,7 @@ <% if @results.present? %>