Commit f78cea520fbef1a53e384e47f81cc75e1d1a2bf4
1 parent
b3bb13f2
Exists in
master
and in
18 other branches
Warn when records in search index do not exist in database
Showing
3 changed files
with
21 additions
and
11 deletions
Show diff stats
CHANGELOG.md
lib/searchkick/results.rb
... | ... | @@ -27,18 +27,25 @@ module Searchkick |
27 | 27 | end |
28 | 28 | |
29 | 29 | # sort |
30 | - hits.map do |hit| | |
31 | - result = results[hit["_type"]][hit["_id"].to_s] | |
32 | - if result && !(options[:load].is_a?(Hash) && options[:load][:dumpable]) | |
33 | - if hit["highlight"] && !result.respond_to?(:search_highlights) | |
34 | - highlights = Hash[hit["highlight"].map { |k, v| [(options[:json] ? k : k.sub(/\.#{@options[:match_suffix]}\z/, "")).to_sym, v.first] }] | |
35 | - result.define_singleton_method(:search_highlights) do | |
36 | - highlights | |
30 | + results = | |
31 | + hits.map do |hit| | |
32 | + result = results[hit["_type"]][hit["_id"].to_s] | |
33 | + if result && !(options[:load].is_a?(Hash) && options[:load][:dumpable]) | |
34 | + if hit["highlight"] && !result.respond_to?(:search_highlights) | |
35 | + highlights = Hash[hit["highlight"].map { |k, v| [(options[:json] ? k : k.sub(/\.#{@options[:match_suffix]}\z/, "")).to_sym, v.first] }] | |
36 | + result.define_singleton_method(:search_highlights) do | |
37 | + highlights | |
38 | + end | |
37 | 39 | end |
38 | 40 | end |
39 | - end | |
40 | - result | |
41 | - end.compact | |
41 | + result | |
42 | + end.compact | |
43 | + | |
44 | + if results.size != hits.size | |
45 | + warn "[searchkick] WARNING: Records in search index do not exist in database" | |
46 | + end | |
47 | + | |
48 | + results | |
42 | 49 | else |
43 | 50 | hits.map do |hit| |
44 | 51 | result = | ... | ... |
test/index_test.rb
... | ... | @@ -85,7 +85,9 @@ class IndexTest < Minitest::Test |
85 | 85 | def test_record_not_found |
86 | 86 | store_names ["Product A", "Product B"] |
87 | 87 | Product.where(name: "Product A").delete_all |
88 | - assert_search "product", ["Product B"] | |
88 | + assert_output nil, /\[searchkick\] WARNING: Records in search index do not exist in database\n/ do | |
89 | + assert_search "product", ["Product B"] | |
90 | + end | |
89 | 91 | ensure |
90 | 92 | Product.reindex |
91 | 93 | end | ... | ... |