From 0ecdbebdf6d4eb18c45220b40b981e79c8667ed0 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Fri, 20 Nov 2020 15:44:03 -0800 Subject: [PATCH] Improved code --- lib/searchkick/results.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/searchkick/results.rb b/lib/searchkick/results.rb index ac880a3..67d2c2f 100644 --- a/lib/searchkick/results.rb +++ b/lib/searchkick/results.rb @@ -227,8 +227,11 @@ module Searchkick # results can have different types results = {} + grouped_hits = hits.group_by { |hit, _| hit["_index"] } + + # determine models index_models = {} - hits.group_by { |hit, _| hit["_index"] }.each do |index, index_hits| + grouped_hits.each do |index, index_hits| klasses = if @klass [@klass] @@ -238,9 +241,12 @@ module Searchkick end raise Searchkick::Error, "Unknown model for index: #{index}" unless klasses.any? index_models[index] = klasses + end + # fetch results + grouped_hits.each do |index, index_hits| results[index] = {} - klasses.each do |klass| + index_models[index].each do |klass| results[index].merge!(results_query(klass, index_hits).to_a.index_by { |r| r.id.to_s }) end end -- libgit2 0.21.0