From 4bf972324b2f77a68cbba47756855c63d9431fd6 Mon Sep 17 00:00:00 2001 From: Paulo Fidalgo Date: Fri, 16 Mar 2018 03:22:50 +0000 Subject: [PATCH] Fix infinite recursion on multi search (#1098) --- lib/searchkick/multi_search.rb | 12 ++++++------ test/multi_search_test.rb | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/searchkick/multi_search.rb b/lib/searchkick/multi_search.rb index 1790a6f..3c5dca8 100644 --- a/lib/searchkick/multi_search.rb +++ b/lib/searchkick/multi_search.rb @@ -14,12 +14,12 @@ module Searchkick private - def perform_search(queries) - responses = client.msearch(body: queries.flat_map { |q| [q.params.except(:body), q.body] })["responses"] + def perform_search(search_queries, perform_retry: true) + responses = client.msearch(body: search_queries.flat_map { |q| [q.params.except(:body), q.body] })["responses"] retry_queries = [] - queries.each_with_index do |query, i| - if query.retry_misspellings?(responses[i]) + search_queries.each_with_index do |query, i| + if perform_retry && query.retry_misspellings?(responses[i]) query.send(:prepare) # okay, since we don't want to expose this method outside Searchkick retry_queries << query else @@ -28,10 +28,10 @@ module Searchkick end if retry_queries.any? - perform_search(retry_queries) + perform_search(retry_queries, perform_retry: false) end - queries + search_queries end def client diff --git a/test/multi_search_test.rb b/test/multi_search_test.rb index a0c9585..63a35f2 100644 --- a/test/multi_search_test.rb +++ b/test/multi_search_test.rb @@ -22,7 +22,7 @@ class MultiSearchTest < Minitest::Test def test_misspellings_below_unmet store_names ["abc", "abd", "aee"] - products = Product.search("abc", misspellings: {below: 2}, execute: false) + products = Product.search("abc", misspellings: {below: 5}, execute: false) Searchkick.multi_search([products]) assert_equal ["abc", "abd"], products.map(&:name) end -- libgit2 0.21.0