searchkick 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7ebf358ab6ac1ae3d08be867a20c9617a4ef0e9
4
- data.tar.gz: 4935de64421b02b6a27505888f588c9e161f13f0
3
+ metadata.gz: 9994b20546ec9b93a6fe9b34a0e329868aa3371b
4
+ data.tar.gz: 77ab1a591fe5e599b3d640d271aafe3f0642b47d
5
5
  SHA512:
6
- metadata.gz: dfd3083681354eb0b1aab35d6b1f2d383326d8b6a2106af167b3f9cc9420ac974fec80c4dec30881e7e6903fb785a6492c643a14e36429bdb93fac21f0dc2193
7
- data.tar.gz: 136e074de01969cb08fc54c35ee3468477b9d4612583510d327559fceee0218950e459b1228c32b3b5a54c60e81f3653ad7e22c0ab626a5193a9a355253bcc88
6
+ metadata.gz: 8cf24561e0d7d871311b6ec5d50f115d654ce64c77422c1e51a07d13831b3ae81327ff1505d59d1b707d6b4926fad61e094178e703ee7a454cffafaf80b77464
7
+ data.tar.gz: 95a15798d483c444398a88c6940e88275eceb850231e869a272ab0bbc659089ca651780eba84ab5ac95f9a24aa1a8aed3e05da88474e6b093aedd265e69c7c7a
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
+ sudo: false
1
2
  language: ruby
2
3
  rvm: 2.2.5
3
4
  services:
4
- - elasticsearch
5
5
  - mongodb
6
6
  before_install:
7
7
  - ./test/ci/before_install.sh
@@ -24,17 +24,22 @@ gemfile:
24
24
  - test/gemfiles/mongoid4.gemfile
25
25
  - test/gemfiles/mongoid5.gemfile
26
26
  env:
27
- - ELASTICSEARCH_VERSION=2.4.1
27
+ - ELASTICSEARCH_VERSION=5.1.1
28
+ jdk: oraclejdk8
28
29
  matrix:
29
30
  include:
30
31
  - gemfile: Gemfile
31
32
  env: ELASTICSEARCH_VERSION=1.0.0
33
+ jdk: oraclejdk7
32
34
  - gemfile: Gemfile
33
35
  env: ELASTICSEARCH_VERSION=1.7.0
36
+ jdk: oraclejdk7
34
37
  - gemfile: Gemfile
35
38
  env: ELASTICSEARCH_VERSION=2.0.0
39
+ jdk: oraclejdk7
36
40
  - gemfile: Gemfile
37
- env: ELASTICSEARCH_VERSION=5.0.0
38
- allow_failures:
41
+ env: ELASTICSEARCH_VERSION=2.4.1
42
+ jdk: oraclejdk7
39
43
  - gemfile: Gemfile
40
- env: ELASTICSEARCH_VERSION=5.0.0
44
+ env: ELASTICSEARCH_VERSION=5.0.1
45
+ jdk: oraclejdk8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
+ ## 1.4.1
2
+
3
+ - Added `partial_reindex` method
4
+ - Added `debug` option to `search` method
5
+ - Added `profile` option
6
+
1
7
  ## 1.4.0
2
8
 
9
+ - Official support for Elasticsearch 5
3
10
  - Boost exact matches for partial matching
4
11
  - Added `searchkick_debug` method
5
12
  - Added `geo_polygon` filter
data/README.md CHANGED
@@ -44,8 +44,6 @@ Add this line to your application’s Gemfile:
44
44
  gem 'searchkick'
45
45
  ```
46
46
 
47
- For Elasticsearch 5.0, use the version `1.4` and above. For Elasticsearch 2.0, use the version `1.0` and above.
48
-
49
47
  Add searchkick to models you want to search.
50
48
 
51
49
  ```ruby
@@ -543,7 +541,7 @@ First, specify which fields use this feature. This is necessary since autocomple
543
541
 
544
542
  ```ruby
545
543
  class Book < ActiveRecord::Base
546
- searchkick match: :word_start, searchable: [:title, :author]
544
+ searchkick word_start: [:title, :author]
547
545
  end
548
546
  ```
549
547
 
@@ -565,6 +563,7 @@ class BooksController < ApplicationController
565
563
  def autocomplete
566
564
  render json: Book.search(params[:query], {
567
565
  fields: ["title^5", "author"],
566
+ match: :word_start,
568
567
  limit: 10,
569
568
  load: false,
570
569
  misspellings: {below: 5}
@@ -579,11 +578,18 @@ Then add the search box and JavaScript code to a view.
579
578
  <input type="text" id="query" name="query" />
580
579
 
581
580
  <script src="jquery.js"></script>
582
- <script src="typeahead.js"></script>
581
+ <script src="typeahead.bundle.js"></script>
583
582
  <script>
584
- $("#query").typeahead({
585
- name: "book",
586
- remote: "/books/autocomplete?query=%QUERY"
583
+ var books = new Bloodhound({
584
+ datumTokenizer: Bloodhound.tokenizers.whitespace,
585
+ queryTokenizer: Bloodhound.tokenizers.whitespace,
586
+ remote: {
587
+ url: '/books/autocomplete?query=%QUERY',
588
+ wildcard: '%QUERY'
589
+ }
590
+ });
591
+ $('#query').typeahead(null, {
592
+ source: books
587
593
  });
588
594
  </script>
589
595
  ```
@@ -852,7 +858,7 @@ Bounded by a box
852
858
  City.search "san", where: {location: {top_left: {lat: 38, lon: -123}, bottom_right: {lat: 37, lon: -122}}}
853
859
  ```
854
860
 
855
- Bounded by a polygon [master]
861
+ Bounded by a polygon
856
862
 
857
863
  ```ruby
858
864
  City.search "san", where: {location: {geo_polygon: {points: [{lat: 38, lon: -123}, {lat: 39, lon: -123}, {lat: 37, lon: 122}]}}}
@@ -1055,7 +1061,7 @@ require "typhoeus/adapters/faraday"
1055
1061
  Ethon.logger.level = Logger::WARN
1056
1062
  ```
1057
1063
 
1058
- **Note:** Typhoeus is not available for Windows.
1064
+ If you run into issues on Windows, check out [this post](https://www.rastating.com/fixing-issues-in-typhoeus-and-httparty-on-windows/).
1059
1065
 
1060
1066
  ### Automatic Failover
1061
1067
 
@@ -1207,6 +1213,21 @@ Product.where("id > 100000").find_in_batches do |batch|
1207
1213
  end
1208
1214
  ```
1209
1215
 
1216
+ Reindex a subset of attributes
1217
+
1218
+ ```ruby
1219
+ class Product < ActiveRecord::Base
1220
+ def search_prices
1221
+ {
1222
+ price: price,
1223
+ sale_price: sale_price
1224
+ }
1225
+ end
1226
+ end
1227
+
1228
+ Product.partial_reindex(:search_prices)
1229
+ ```
1230
+
1210
1231
  Remove old indices
1211
1232
 
1212
1233
  ```ruby
@@ -1517,6 +1538,8 @@ Everyone is encouraged to help improve this project. Here are a few ways you can
1517
1538
  - Write, clarify, or fix documentation
1518
1539
  - Suggest or add new features
1519
1540
 
1541
+ If you’re looking for ideas, [try here](https://github.com/ankane/searchkick/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).
1542
+
1520
1543
  To get started with development and testing:
1521
1544
 
1522
1545
  ```sh
@@ -67,6 +67,10 @@ module Searchkick
67
67
  end
68
68
  alias_method :import, :bulk_index
69
69
 
70
+ def bulk_update(records, method_name)
71
+ Searchkick.queue_items(records.map { |r| {update: record_data(r).merge(data: {doc: search_data(r, method_name)})} })
72
+ end
73
+
70
74
  def record_data(r)
71
75
  data = {
72
76
  _index: name,
@@ -221,6 +225,7 @@ module Searchkick
221
225
 
222
226
  def import_scope(scope, options = {})
223
227
  batch_size = @options[:batch_size] || 1000
228
+ method_name = options[:method_name]
224
229
 
225
230
  # use scope for import
226
231
  scope = scope.search_import if scope.respond_to?(:search_import)
@@ -234,7 +239,7 @@ module Searchkick
234
239
  end
235
240
 
236
241
  scope.find_in_batches batch_size: batch_size do |batch|
237
- import batch.select(&:should_index?)
242
+ import_or_update batch.select(&:should_index?), method_name
238
243
  end
239
244
  else
240
245
  # https://github.com/karmi/tire/blob/master/lib/tire/model/import.rb
@@ -244,14 +249,18 @@ module Searchkick
244
249
  scope.all.each do |item|
245
250
  items << item if item.should_index?
246
251
  if items.length == batch_size
247
- import items
252
+ import_or_update items, method_name
248
253
  items = []
249
254
  end
250
255
  end
251
- import items
256
+ import_or_update items, method_name
252
257
  end
253
258
  end
254
259
 
260
+ def import_or_update(records, method_name)
261
+ method_name ? bulk_update(records, method_name) : import(records)
262
+ end
263
+
255
264
  # other
256
265
 
257
266
  def tokens(text, options = {})
@@ -285,13 +294,14 @@ module Searchkick
285
294
  id.is_a?(Numeric) ? id : id.to_s
286
295
  end
287
296
 
288
- def search_data(record)
289
- source = record.search_data
297
+ def search_data(record, method_name = nil)
298
+ partial_reindex = !method_name.nil?
299
+ source = record.send(method_name || :search_data)
290
300
  options = record.class.searchkick_options
291
301
 
292
302
  # stringify fields
293
303
  # remove _id since search_id is used instead
294
- source = source.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v; memo }.except("_id")
304
+ source = source.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v; memo }.except("_id", "_type")
295
305
 
296
306
  # conversions
297
307
  Array(options[:conversions]).map(&:to_s).each do |conversions_field|
@@ -302,7 +312,7 @@ module Searchkick
302
312
 
303
313
  # hack to prevent generator field doesn't exist error
304
314
  (options[:suggest] || []).map(&:to_s).each do |field|
305
- source[field] = nil unless source[field]
315
+ source[field] = nil if !source[field] && !partial_reindex
306
316
  end
307
317
 
308
318
  # locations
@@ -25,7 +25,7 @@ module Searchkick
25
25
  }
26
26
  end
27
27
 
28
- keyword_mapping[:ignore_above] = 256 unless below22
28
+ keyword_mapping[:ignore_above] = (options[:ignore_above] || 256) unless below22
29
29
 
30
30
  settings = {
31
31
  analysis: {
@@ -308,7 +308,7 @@ module Searchkick
308
308
  dynamic_fields["{name}"] = {type: default_type, index: "no"}
309
309
  end
310
310
 
311
- dynamic_fields["{name}"][:ignore_above] = 256 unless below22
311
+ dynamic_fields["{name}"][:ignore_above] = (options[:ignore_above] || 256) unless below22
312
312
 
313
313
  unless options[:searchable]
314
314
  if options[:match] && options[:match] != :word
@@ -54,6 +54,13 @@ module Searchkick
54
54
  end
55
55
  alias_method :reindex, :searchkick_reindex unless method_defined?(:reindex)
56
56
 
57
+ def searchkick_partial_reindex(method_name)
58
+ searchkick_index.import_scope(searchkick_klass, method_name: method_name)
59
+ searchkick_index.refresh
60
+ true
61
+ end
62
+ alias_method :partial_reindex, :searchkick_partial_reindex unless method_defined?(:partial_reindex)
63
+
57
64
  def clean_indices
58
65
  searchkick_index.clean_indices
59
66
  end
@@ -71,30 +78,7 @@ module Searchkick
71
78
  end
72
79
 
73
80
  def searchkick_debug
74
- require "pp"
75
-
76
- puts "Model Searchkick Options"
77
- pp searchkick_options
78
- puts
79
-
80
- puts "Model Sample Search Data"
81
- begin
82
- pp first(3).map { |r| {index: searchkick_index.record_data(r).merge(data: searchkick_index.send(:search_data, r))}}
83
- rescue => e
84
- puts "#{e.class.name}: #{e.message}"
85
- end
86
- puts
87
-
88
- puts "Elasticsearch Mapping"
89
- puts JSON.pretty_generate(searchkick_index.mapping)
90
- puts
91
-
92
- puts "Elasticsearch Settings"
93
- puts JSON.pretty_generate(searchkick_index.settings)
94
- puts
95
-
96
- puts "Elasticsearch Sample Results"
97
- puts JSON.pretty_generate(search("*", load: false, limit: 3).response)
81
+ warn "Use debug option with search method instead"
98
82
 
99
83
  nil # do not return anything, as this is strictly used for manual debugging
100
84
  end
@@ -117,6 +101,12 @@ module Searchkick
117
101
  self.class.searchkick_index.reindex_record_async(self)
118
102
  end unless method_defined?(:reindex_async)
119
103
 
104
+ def partial_reindex(method_name)
105
+ self.class.searchkick_index.bulk_update([self], method_name)
106
+ self.class.searchkick_index.refresh
107
+ true
108
+ end unless method_defined?(:partial_reindex)
109
+
120
110
  def similar(options = {})
121
111
  self.class.searchkick_index.similar_record(self, options)
122
112
  end unless method_defined?(:similar)
@@ -112,11 +112,50 @@ module Searchkick
112
112
  padding: @padding,
113
113
  load: @load,
114
114
  includes: options[:include] || options[:includes],
115
- json: !options[:json].nil?,
115
+ json: !@json.nil?,
116
116
  match_suffix: @match_suffix,
117
117
  highlighted_fields: @highlighted_fields || []
118
118
  }
119
119
 
120
+ if options[:debug]
121
+ require "pp"
122
+
123
+ puts "Searchkick Version: #{Searchkick::VERSION}"
124
+ puts "Elasticsearch Version: #{Searchkick.server_version}"
125
+ puts
126
+
127
+ puts "Model Searchkick Options"
128
+ pp searchkick_options
129
+ puts
130
+
131
+ puts "Search Options"
132
+ pp options
133
+ puts
134
+
135
+ puts "Model Search Data"
136
+ begin
137
+ pp klass.first(3).map { |r| {index: searchkick_index.record_data(r).merge(data: searchkick_index.send(:search_data, r))}}
138
+ rescue => e
139
+ puts "#{e.class.name}: #{e.message}"
140
+ end
141
+ puts
142
+
143
+ puts "Elasticsearch Mapping"
144
+ puts JSON.pretty_generate(searchkick_index.mapping)
145
+ puts
146
+
147
+ puts "Elasticsearch Settings"
148
+ puts JSON.pretty_generate(searchkick_index.settings)
149
+ puts
150
+
151
+ puts "Elasticsearch Query"
152
+ puts to_curl
153
+ puts
154
+
155
+ puts "Elasticsearch Results"
156
+ puts JSON.pretty_generate(response)
157
+ end
158
+
120
159
  # set execute for multi search
121
160
  @execute = Searchkick::Results.new(searchkick_klass, response, opts)
122
161
  end
@@ -173,9 +212,9 @@ module Searchkick
173
212
 
174
213
  all = term == "*"
175
214
 
176
- options[:json] ||= options[:body]
177
- if options[:json]
178
- payload = options[:json]
215
+ @json = options[:json] || options[:body]
216
+ if @json
217
+ payload = @json
179
218
  else
180
219
  if options[:query]
181
220
  payload = options[:query]
@@ -365,6 +404,7 @@ module Searchkick
365
404
  from: offset
366
405
  }
367
406
  payload[:explain] = options[:explain] if options[:explain]
407
+ payload[:profile] = options[:profile] if options[:profile]
368
408
 
369
409
  # order
370
410
  set_order(payload) if options[:order]
@@ -181,7 +181,11 @@ module Searchkick
181
181
  if options[:includes]
182
182
  records =
183
183
  if defined?(NoBrainer::Document) && records < NoBrainer::Document
184
- records.preload(options[:includes])
184
+ if Gem.loaded_specs["nobrainer"].version >= Gem::Version.new("0.21")
185
+ records.eager_load(options[:includes])
186
+ else
187
+ records.preload(options[:includes])
188
+ end
185
189
  else
186
190
  records.includes(options[:includes])
187
191
  end
@@ -196,7 +200,7 @@ module Searchkick
196
200
  elsif records.respond_to?(:queryable)
197
201
  # Mongoid 3+
198
202
  records.queryable.for_ids(ids)
199
- elsif records.respond_to?(:unscoped) && records.all.respond_to?(:preload)
203
+ elsif records.respond_to?(:unscoped) && [:preload, :eager_load].any? { |m| records.all.respond_to?(m) }
200
204
  # Nobrainer
201
205
  records.unscoped.where(:id.in => ids)
202
206
  else
@@ -1,3 +1,3 @@
1
1
  module Searchkick
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
@@ -4,15 +4,14 @@ set -e
4
4
 
5
5
  gem install bundler
6
6
 
7
- # https://docs.travis-ci.com/user/database-setup/#ElasticSearch
8
- sudo apt-get purge elasticsearch
9
7
  if [[ $ELASTICSEARCH_VERSION == 1* ]]; then
10
- curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION.deb
8
+ curl -L -O https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION.tar.gz
11
9
  elif [[ $ELASTICSEARCH_VERSION == 2* ]]; then
12
- curl -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/$ELASTICSEARCH_VERSION/elasticsearch-$ELASTICSEARCH_VERSION.deb
10
+ curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/$ELASTICSEARCH_VERSION/elasticsearch-$ELASTICSEARCH_VERSION.tar.gz
13
11
  else
14
- curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION.deb
12
+ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION.tar.gz
15
13
  fi
16
- sudo dpkg -i --force-confnew elasticsearch-$ELASTICSEARCH_VERSION.deb
17
- sudo service elasticsearch restart
18
- sleep 10
14
+ tar -xvf elasticsearch-$ELASTICSEARCH_VERSION.tar.gz
15
+ cd elasticsearch-$ELASTICSEARCH_VERSION/bin
16
+ ./elasticsearch -d
17
+ wget -O- --waitretry=1 --tries=30 --retry-connrefused -v http://127.0.0.1:9200/
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in searchkick.gemspec
4
4
  gemspec path: "../../"
5
5
 
6
- gem "nobrainer"
6
+ gem "nobrainer", ">= 0.21.0"
data/test/match_test.rb CHANGED
@@ -34,7 +34,9 @@ class MatchTest < Minitest::Test
34
34
  end
35
35
 
36
36
  def test_percent
37
- store_names ["1% Milk", "2% Milk", "Whole Milk"]
37
+ # Note: "2% Milk" doesn't get matched in ES below 5.1.1
38
+ # This could be a bug since it has an edit distance of 1
39
+ store_names ["1% Milk", "Whole Milk"]
38
40
  assert_search "1%", ["1% Milk"]
39
41
  end
40
42
 
@@ -184,6 +186,11 @@ class MatchTest < Minitest::Test
184
186
  assert_search "ben and jerrys", ["Ben and Jerry's"]
185
187
  end
186
188
 
189
+ def test_apostrophe_search
190
+ store_names ["Ben and Jerrys"]
191
+ assert_search "ben and jerry's", ["Ben and Jerrys"]
192
+ end
193
+
187
194
  def test_ampersand_index
188
195
  store_names ["Ben & Jerry's"]
189
196
  assert_search "ben and jerrys", ["Ben & Jerry's"]
@@ -0,0 +1,58 @@
1
+ require_relative "test_helper"
2
+
3
+ class PartialReindexTest < Minitest::Test
4
+ def test_class_method
5
+ store [{name: "Hi", color: "Blue"}]
6
+
7
+ # normal search
8
+ assert_search "hi", ["Hi"], fields: [:name], load: false
9
+ assert_search "blue", ["Hi"], fields: [:color], load: false
10
+
11
+ # update
12
+ product = Product.first
13
+ product.name = "Bye"
14
+ product.color = "Red"
15
+ Searchkick.callbacks(false) do
16
+ product.save!
17
+ end
18
+ Product.searchkick_index.refresh
19
+
20
+ # index not updated
21
+ assert_search "hi", ["Hi"], fields: [:name], load: false
22
+ assert_search "blue", ["Hi"], fields: [:color], load: false
23
+
24
+ # partial reindex
25
+ Product.partial_reindex(:search_name)
26
+
27
+ # name updated, but not color
28
+ assert_search "bye", ["Bye"], fields: [:name], load: false
29
+ assert_search "blue", ["Bye"], fields: [:color], load: false
30
+ end
31
+
32
+ def test_instance_method
33
+ store [{name: "Hi", color: "Blue"}]
34
+
35
+ # normal search
36
+ assert_search "hi", ["Hi"], fields: [:name], load: false
37
+ assert_search "blue", ["Hi"], fields: [:color], load: false
38
+
39
+ # update
40
+ product = Product.first
41
+ product.name = "Bye"
42
+ product.color = "Red"
43
+ Searchkick.callbacks(false) do
44
+ product.save!
45
+ end
46
+ Product.searchkick_index.refresh
47
+
48
+ # index not updated
49
+ assert_search "hi", ["Hi"], fields: [:name], load: false
50
+ assert_search "blue", ["Hi"], fields: [:color], load: false
51
+
52
+ product.partial_reindex(:search_name)
53
+
54
+ # name updated, but not color
55
+ assert_search "bye", ["Bye"], fields: [:name], load: false
56
+ assert_search "blue", ["Bye"], fields: [:color], load: false
57
+ end
58
+ end
data/test/sql_test.rb CHANGED
@@ -55,7 +55,7 @@ class SqlTest < Minitest::Test
55
55
  # body_options
56
56
 
57
57
  def test_body_options_should_merge_into_body
58
- query = Product.search({query: {name: "milk"}, body_options: {min_score: 1.0}}, execute: false)
58
+ query = Product.search("*", body_options: {min_score: 1.0}, execute: false)
59
59
  assert_equal 1.0, query.body[:min_score]
60
60
  end
61
61
 
@@ -81,6 +81,12 @@ class SqlTest < Minitest::Test
81
81
  assert_kind_of Hash, Product.search("product", load: false, include: [:store]).first
82
82
  end
83
83
 
84
+ def test_load_false_nested_object
85
+ aisle = {"id" => 1, "name" => "Frozen"}
86
+ store [{name: "Product A", aisle: aisle}]
87
+ assert_equal aisle, Product.search("product", load: false).first.aisle.to_hash
88
+ end
89
+
84
90
  # select
85
91
 
86
92
  def test_select
@@ -218,14 +224,16 @@ class SqlTest < Minitest::Test
218
224
  assert_nil result.user_ids
219
225
  end
220
226
 
221
- # other tests
227
+ # nested
222
228
 
223
- def test_nested_object
224
- aisle = {"id" => 1, "name" => "Frozen"}
225
- store [{name: "Product A", aisle: aisle}]
226
- assert_equal aisle, Product.search("product", load: false).first.aisle.to_hash
229
+ def test_nested_search
230
+ skip
231
+ store [{name: "Product A", aisle: {"id" => 1, "name" => "Frozen"}}]
232
+ assert_search "frozen", ["Product A"], fields: ["aisle.name"], debug: true
227
233
  end
228
234
 
235
+ # other tests
236
+
229
237
  def test_include
230
238
  skip unless defined?(ActiveRecord)
231
239
  store_names ["Product A"]
data/test/test_helper.rb CHANGED
@@ -309,6 +309,12 @@ class Product
309
309
  def should_index?
310
310
  name != "DO NOT INDEX"
311
311
  end
312
+
313
+ def search_name
314
+ {
315
+ name: name
316
+ }
317
+ end
312
318
  end
313
319
 
314
320
  class Store
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchkick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-27 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -150,6 +150,7 @@ files:
150
150
  - test/multi_tenancy_test.rb
151
151
  - test/order_test.rb
152
152
  - test/pagination_test.rb
153
+ - test/partial_reindex_test.rb
153
154
  - test/query_test.rb
154
155
  - test/records_test.rb
155
156
  - test/reindex_job_test.rb
@@ -218,6 +219,7 @@ test_files:
218
219
  - test/multi_tenancy_test.rb
219
220
  - test/order_test.rb
220
221
  - test/pagination_test.rb
222
+ - test/partial_reindex_test.rb
221
223
  - test/query_test.rb
222
224
  - test/records_test.rb
223
225
  - test/reindex_job_test.rb