searchkick_evichat 0.0.2

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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE.md +7 -0
  3. data/.gitignore +22 -0
  4. data/.travis.yml +33 -0
  5. data/CHANGELOG.md +571 -0
  6. data/CONTRIBUTING.md +51 -0
  7. data/Gemfile +16 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +1895 -0
  10. data/Rakefile +16 -0
  11. data/benchmark/Gemfile +24 -0
  12. data/benchmark/index.rb +99 -0
  13. data/benchmark/search.rb +48 -0
  14. data/docs/Searchkick-3-Upgrade.md +57 -0
  15. data/lib/searchkick.rb +255 -0
  16. data/lib/searchkick/bulk_indexer.rb +171 -0
  17. data/lib/searchkick/bulk_reindex_job.rb +27 -0
  18. data/lib/searchkick/hash_wrapper.rb +12 -0
  19. data/lib/searchkick/index.rb +331 -0
  20. data/lib/searchkick/index_options.rb +414 -0
  21. data/lib/searchkick/indexer.rb +28 -0
  22. data/lib/searchkick/logging.rb +243 -0
  23. data/lib/searchkick/middleware.rb +12 -0
  24. data/lib/searchkick/model.rb +105 -0
  25. data/lib/searchkick/multi_search.rb +41 -0
  26. data/lib/searchkick/process_batch_job.rb +23 -0
  27. data/lib/searchkick/process_queue_job.rb +23 -0
  28. data/lib/searchkick/query.rb +978 -0
  29. data/lib/searchkick/record_data.rb +128 -0
  30. data/lib/searchkick/record_indexer.rb +59 -0
  31. data/lib/searchkick/reindex_queue.rb +38 -0
  32. data/lib/searchkick/reindex_v2_job.rb +36 -0
  33. data/lib/searchkick/results.rb +235 -0
  34. data/lib/searchkick/tasks.rb +29 -0
  35. data/lib/searchkick/version.rb +3 -0
  36. data/searchkick.gemspec +30 -0
  37. data/test/aggs_test.rb +217 -0
  38. data/test/autocomplete_test.rb +81 -0
  39. data/test/boost_test.rb +207 -0
  40. data/test/callbacks_test.rb +59 -0
  41. data/test/ci/before_install.sh +17 -0
  42. data/test/errors_test.rb +19 -0
  43. data/test/gemfiles/activerecord42.gemfile +7 -0
  44. data/test/gemfiles/activerecord50.gemfile +7 -0
  45. data/test/gemfiles/activerecord51.gemfile +7 -0
  46. data/test/gemfiles/apartment.gemfile +8 -0
  47. data/test/gemfiles/cequel.gemfile +8 -0
  48. data/test/gemfiles/mongoid5.gemfile +7 -0
  49. data/test/gemfiles/mongoid6.gemfile +12 -0
  50. data/test/gemfiles/nobrainer.gemfile +8 -0
  51. data/test/gemfiles/parallel_tests.gemfile +8 -0
  52. data/test/geo_shape_test.rb +171 -0
  53. data/test/highlight_test.rb +94 -0
  54. data/test/index_test.rb +165 -0
  55. data/test/inheritance_test.rb +82 -0
  56. data/test/language_test.rb +79 -0
  57. data/test/marshal_test.rb +13 -0
  58. data/test/match_test.rb +293 -0
  59. data/test/misspellings_test.rb +56 -0
  60. data/test/model_test.rb +40 -0
  61. data/test/multi_search_test.rb +37 -0
  62. data/test/multi_tenancy_test.rb +22 -0
  63. data/test/order_test.rb +40 -0
  64. data/test/pagination_test.rb +96 -0
  65. data/test/partial_reindex_test.rb +65 -0
  66. data/test/query_test.rb +43 -0
  67. data/test/reindex_test.rb +87 -0
  68. data/test/reindex_v2_job_test.rb +27 -0
  69. data/test/routing_test.rb +23 -0
  70. data/test/should_index_test.rb +32 -0
  71. data/test/similar_test.rb +28 -0
  72. data/test/sql_test.rb +190 -0
  73. data/test/suggest_test.rb +100 -0
  74. data/test/support/kaminari.yml +21 -0
  75. data/test/synonyms_test.rb +69 -0
  76. data/test/test_helper.rb +593 -0
  77. data/test/where_test.rb +249 -0
  78. metadata +250 -0
@@ -0,0 +1,249 @@
1
+ require_relative "test_helper"
2
+
3
+ class WhereTest < Minitest::Test
4
+ def test_where
5
+ now = Time.now
6
+ store [
7
+ {name: "Product A", store_id: 1, in_stock: true, backordered: true, created_at: now, orders_count: 4, user_ids: [1, 2, 3]},
8
+ {name: "Product B", store_id: 2, in_stock: true, backordered: false, created_at: now - 1, orders_count: 3, user_ids: [1]},
9
+ {name: "Product C", store_id: 3, in_stock: false, backordered: true, created_at: now - 2, orders_count: 2, user_ids: [1, 3]},
10
+ {name: "Product D", store_id: 4, in_stock: false, backordered: false, created_at: now - 3, orders_count: 1}
11
+ ]
12
+ assert_search "product", ["Product A", "Product B"], where: {in_stock: true}
13
+
14
+ # due to precision
15
+ unless cequel?
16
+ # date
17
+ assert_search "product", ["Product A"], where: {created_at: {gt: now - 1}}
18
+ assert_search "product", ["Product A", "Product B"], where: {created_at: {gte: now - 1}}
19
+ assert_search "product", ["Product D"], where: {created_at: {lt: now - 2}}
20
+ assert_search "product", ["Product C", "Product D"], where: {created_at: {lte: now - 2}}
21
+ end
22
+
23
+ # integer
24
+ assert_search "product", ["Product A"], where: {store_id: {lt: 2}}
25
+ assert_search "product", ["Product A", "Product B"], where: {store_id: {lte: 2}}
26
+ assert_search "product", ["Product D"], where: {store_id: {gt: 3}}
27
+ assert_search "product", ["Product C", "Product D"], where: {store_id: {gte: 3}}
28
+
29
+ # range
30
+ assert_search "product", ["Product A", "Product B"], where: {store_id: 1..2}
31
+ assert_search "product", ["Product A"], where: {store_id: 1...2}
32
+ assert_search "product", ["Product A", "Product B"], where: {store_id: [1, 2]}
33
+ assert_search "product", ["Product B", "Product C", "Product D"], where: {store_id: {not: 1}}
34
+ assert_search "product", ["Product B", "Product C", "Product D"], where: {store_id: {_not: 1}}
35
+ assert_search "product", ["Product C", "Product D"], where: {store_id: {not: [1, 2]}}
36
+ assert_search "product", ["Product C", "Product D"], where: {store_id: {_not: [1, 2]}}
37
+ assert_search "product", ["Product A"], where: {user_ids: {lte: 2, gte: 2}}
38
+
39
+ # or
40
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {or: [[{in_stock: true}, {store_id: 3}]]}
41
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {or: [[{orders_count: [2, 4]}, {store_id: [1, 2]}]]}
42
+ assert_search "product", ["Product A", "Product D"], where: {or: [[{orders_count: 1}, {created_at: {gte: now - 1}, backordered: true}]]}
43
+
44
+ # _or
45
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {_or: [{in_stock: true}, {store_id: 3}]}
46
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {_or: [{orders_count: [2, 4]}, {store_id: [1, 2]}]}
47
+ assert_search "product", ["Product A", "Product D"], where: {_or: [{orders_count: 1}, {created_at: {gte: now - 1}, backordered: true}]}
48
+
49
+ # _and
50
+ assert_search "product", ["Product A"], where: {_and: [{in_stock: true}, {backordered: true}]}
51
+
52
+ # _not
53
+ assert_search "product", ["Product B", "Product C"], where: {_not: {_or: [{orders_count: 1}, {created_at: {gte: now - 1}, backordered: true}]}}
54
+
55
+ # all
56
+ assert_search "product", ["Product A", "Product C"], where: {user_ids: {all: [1, 3]}}
57
+ assert_search "product", [], where: {user_ids: {all: [1, 2, 3, 4]}}
58
+
59
+ # any / nested terms
60
+ assert_search "product", ["Product B", "Product C"], where: {user_ids: {not: [2], in: [1, 3]}}
61
+ assert_search "product", ["Product B", "Product C"], where: {user_ids: {_not: [2], in: [1, 3]}}
62
+
63
+ # not / exists
64
+ assert_search "product", ["Product D"], where: {user_ids: nil}
65
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {user_ids: {not: nil}}
66
+ assert_search "product", ["Product A", "Product B", "Product C"], where: {user_ids: {_not: nil}}
67
+ assert_search "product", ["Product A", "Product C", "Product D"], where: {user_ids: [3, nil]}
68
+ assert_search "product", ["Product B"], where: {user_ids: {not: [3, nil]}}
69
+ assert_search "product", ["Product B"], where: {user_ids: {_not: [3, nil]}}
70
+ end
71
+
72
+ def test_regexp
73
+ store_names ["Product A"]
74
+ assert_search "*", ["Product A"], where: {name: /Pro.+/}
75
+ end
76
+
77
+ def test_alternate_regexp
78
+ store_names ["Product A", "Item B"]
79
+ assert_search "*", ["Product A"], where: {name: {regexp: "Pro.+"}}
80
+ end
81
+
82
+ def test_special_regexp
83
+ store_names ["Product <A>", "Item <B>"]
84
+ assert_search "*", ["Product <A>"], where: {name: /Pro.+<.+/}
85
+ end
86
+
87
+ def test_where_string
88
+ store [
89
+ {name: "Product A", color: "RED"}
90
+ ]
91
+ assert_search "product", ["Product A"], where: {color: "RED"}
92
+ end
93
+
94
+ def test_where_nil
95
+ store [
96
+ {name: "Product A"},
97
+ {name: "Product B", color: "red"}
98
+ ]
99
+ assert_search "product", ["Product A"], where: {color: nil}
100
+ end
101
+
102
+ def test_where_id
103
+ store_names ["Product A"]
104
+ product = Product.first
105
+ assert_search "product", ["Product A"], where: {id: product.id.to_s}
106
+ end
107
+
108
+ def test_where_empty
109
+ store_names ["Product A"]
110
+ assert_search "product", ["Product A"], where: {}
111
+ end
112
+
113
+ def test_where_empty_array
114
+ store_names ["Product A"]
115
+ assert_search "product", [], where: {store_id: []}
116
+ end
117
+
118
+ # http://elasticsearch-users.115913.n3.nabble.com/Numeric-range-quey-or-filter-in-an-array-field-possible-or-not-td4042967.html
119
+ # https://gist.github.com/jprante/7099463
120
+ def test_where_range_array
121
+ store [
122
+ {name: "Product A", user_ids: [11, 23, 13, 16, 17, 23]},
123
+ {name: "Product B", user_ids: [1, 2, 3, 4, 5, 6, 7, 8, 9]},
124
+ {name: "Product C", user_ids: [101, 230, 150, 200]}
125
+ ]
126
+ assert_search "product", ["Product A"], where: {user_ids: {gt: 10, lt: 24}}
127
+ end
128
+
129
+ def test_where_range_array_again
130
+ store [
131
+ {name: "Product A", user_ids: [19, 32, 42]},
132
+ {name: "Product B", user_ids: [13, 40, 52]}
133
+ ]
134
+ assert_search "product", ["Product A"], where: {user_ids: {gt: 26, lt: 36}}
135
+ end
136
+
137
+ def test_near
138
+ store [
139
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
140
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
141
+ ]
142
+ assert_search "san", ["San Francisco"], where: {location: {near: [37.5, -122.5]}}
143
+ end
144
+
145
+ def test_near_hash
146
+ store [
147
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
148
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
149
+ ]
150
+ assert_search "san", ["San Francisco"], where: {location: {near: {lat: 37.5, lon: -122.5}}}
151
+ end
152
+
153
+ def test_near_within
154
+ store [
155
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
156
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000},
157
+ {name: "San Marino", latitude: 43.9333, longitude: 12.4667}
158
+ ]
159
+ assert_search "san", ["San Francisco", "San Antonio"], where: {location: {near: [37, -122], within: "2000mi"}}
160
+ end
161
+
162
+ def test_near_within_hash
163
+ store [
164
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
165
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000},
166
+ {name: "San Marino", latitude: 43.9333, longitude: 12.4667}
167
+ ]
168
+ assert_search "san", ["San Francisco", "San Antonio"], where: {location: {near: {lat: 37, lon: -122}, within: "2000mi"}}
169
+ end
170
+
171
+ def test_geo_polygon
172
+ store [
173
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
174
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000},
175
+ {name: "San Marino", latitude: 43.9333, longitude: 12.4667}
176
+ ]
177
+ polygon = [
178
+ {lat: 42.185695, lon: -125.496146},
179
+ {lat: 42.185695, lon: -94.125535},
180
+ {lat: 27.122789, lon: -94.125535},
181
+ {lat: 27.12278, lon: -125.496146}
182
+ ]
183
+ assert_search "san", ["San Francisco", "San Antonio"], where: {location: {geo_polygon: {points: polygon}}}
184
+ end
185
+
186
+ def test_top_left_bottom_right
187
+ store [
188
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
189
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
190
+ ]
191
+ assert_search "san", ["San Francisco"], where: {location: {top_left: [38, -123], bottom_right: [37, -122]}}
192
+ end
193
+
194
+ def test_top_left_bottom_right_hash
195
+ store [
196
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
197
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
198
+ ]
199
+ assert_search "san", ["San Francisco"], where: {location: {top_left: {lat: 38, lon: -123}, bottom_right: {lat: 37, lon: -122}}}
200
+ end
201
+
202
+ def test_top_right_bottom_left
203
+ store [
204
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
205
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
206
+ ]
207
+ assert_search "san", ["San Francisco"], where: {location: {top_right: [38, -122], bottom_left: [37, -123]}}
208
+ end
209
+
210
+ def test_top_right_bottom_left_hash
211
+ store [
212
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
213
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
214
+ ]
215
+ assert_search "san", ["San Francisco"], where: {location: {top_right: {lat: 38, lon: -122}, bottom_left: {lat: 37, lon: -123}}}
216
+ end
217
+
218
+ def test_multiple_locations
219
+ store [
220
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
221
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
222
+ ]
223
+ assert_search "san", ["San Francisco"], where: {multiple_locations: {near: [37.5, -122.5]}}
224
+ end
225
+
226
+ def test_multiple_locations_with_term_filter
227
+ store [
228
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
229
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
230
+ ]
231
+ assert_search "san", [], where: {multiple_locations: {near: [37.5, -122.5]}, name: "San Antonio"}
232
+ assert_search "san", ["San Francisco"], where: {multiple_locations: {near: [37.5, -122.5]}, name: "San Francisco"}
233
+ end
234
+
235
+ def test_multiple_locations_hash
236
+ store [
237
+ {name: "San Francisco", latitude: 37.7833, longitude: -122.4167},
238
+ {name: "San Antonio", latitude: 29.4167, longitude: -98.5000}
239
+ ]
240
+ assert_search "san", ["San Francisco"], where: {multiple_locations: {near: {lat: 37.5, lon: -122.5}}}
241
+ end
242
+
243
+ def test_nested
244
+ store [
245
+ {name: "Product A", details: {year: 2016}}
246
+ ]
247
+ assert_search "product", ["Product A"], where: {"details.year" => 2016}
248
+ end
249
+ end
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: searchkick_evichat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Evichat
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: elasticsearch
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hashie
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Intelligent search made easy
98
+ email:
99
+ - info@evichat.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".github/ISSUE_TEMPLATE.md"
105
+ - ".gitignore"
106
+ - ".travis.yml"
107
+ - CHANGELOG.md
108
+ - CONTRIBUTING.md
109
+ - Gemfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - benchmark/Gemfile
114
+ - benchmark/index.rb
115
+ - benchmark/search.rb
116
+ - docs/Searchkick-3-Upgrade.md
117
+ - lib/searchkick.rb
118
+ - lib/searchkick/bulk_indexer.rb
119
+ - lib/searchkick/bulk_reindex_job.rb
120
+ - lib/searchkick/hash_wrapper.rb
121
+ - lib/searchkick/index.rb
122
+ - lib/searchkick/index_options.rb
123
+ - lib/searchkick/indexer.rb
124
+ - lib/searchkick/logging.rb
125
+ - lib/searchkick/middleware.rb
126
+ - lib/searchkick/model.rb
127
+ - lib/searchkick/multi_search.rb
128
+ - lib/searchkick/process_batch_job.rb
129
+ - lib/searchkick/process_queue_job.rb
130
+ - lib/searchkick/query.rb
131
+ - lib/searchkick/record_data.rb
132
+ - lib/searchkick/record_indexer.rb
133
+ - lib/searchkick/reindex_queue.rb
134
+ - lib/searchkick/reindex_v2_job.rb
135
+ - lib/searchkick/results.rb
136
+ - lib/searchkick/tasks.rb
137
+ - lib/searchkick/version.rb
138
+ - searchkick.gemspec
139
+ - test/aggs_test.rb
140
+ - test/autocomplete_test.rb
141
+ - test/boost_test.rb
142
+ - test/callbacks_test.rb
143
+ - test/ci/before_install.sh
144
+ - test/errors_test.rb
145
+ - test/gemfiles/activerecord42.gemfile
146
+ - test/gemfiles/activerecord50.gemfile
147
+ - test/gemfiles/activerecord51.gemfile
148
+ - test/gemfiles/apartment.gemfile
149
+ - test/gemfiles/cequel.gemfile
150
+ - test/gemfiles/mongoid5.gemfile
151
+ - test/gemfiles/mongoid6.gemfile
152
+ - test/gemfiles/nobrainer.gemfile
153
+ - test/gemfiles/parallel_tests.gemfile
154
+ - test/geo_shape_test.rb
155
+ - test/highlight_test.rb
156
+ - test/index_test.rb
157
+ - test/inheritance_test.rb
158
+ - test/language_test.rb
159
+ - test/marshal_test.rb
160
+ - test/match_test.rb
161
+ - test/misspellings_test.rb
162
+ - test/model_test.rb
163
+ - test/multi_search_test.rb
164
+ - test/multi_tenancy_test.rb
165
+ - test/order_test.rb
166
+ - test/pagination_test.rb
167
+ - test/partial_reindex_test.rb
168
+ - test/query_test.rb
169
+ - test/reindex_test.rb
170
+ - test/reindex_v2_job_test.rb
171
+ - test/routing_test.rb
172
+ - test/should_index_test.rb
173
+ - test/similar_test.rb
174
+ - test/sql_test.rb
175
+ - test/suggest_test.rb
176
+ - test/support/kaminari.yml
177
+ - test/synonyms_test.rb
178
+ - test/test_helper.rb
179
+ - test/where_test.rb
180
+ homepage: https://github.com/Evichat/Evichat-Searchkick
181
+ licenses:
182
+ - MIT
183
+ metadata: {}
184
+ post_install_message:
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 2.2.0
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ requirements: []
199
+ rubyforge_project:
200
+ rubygems_version: 2.7.6
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: Searchkick learns what your users are looking for. As more people search,
204
+ it gets smarter and the results get better. It’s friendly for developers - and magical
205
+ for your users.
206
+ test_files:
207
+ - benchmark/Gemfile
208
+ - benchmark/index.rb
209
+ - benchmark/search.rb
210
+ - test/aggs_test.rb
211
+ - test/autocomplete_test.rb
212
+ - test/boost_test.rb
213
+ - test/callbacks_test.rb
214
+ - test/ci/before_install.sh
215
+ - test/errors_test.rb
216
+ - test/gemfiles/activerecord42.gemfile
217
+ - test/gemfiles/activerecord50.gemfile
218
+ - test/gemfiles/activerecord51.gemfile
219
+ - test/gemfiles/apartment.gemfile
220
+ - test/gemfiles/cequel.gemfile
221
+ - test/gemfiles/mongoid5.gemfile
222
+ - test/gemfiles/mongoid6.gemfile
223
+ - test/gemfiles/nobrainer.gemfile
224
+ - test/gemfiles/parallel_tests.gemfile
225
+ - test/geo_shape_test.rb
226
+ - test/highlight_test.rb
227
+ - test/index_test.rb
228
+ - test/inheritance_test.rb
229
+ - test/language_test.rb
230
+ - test/marshal_test.rb
231
+ - test/match_test.rb
232
+ - test/misspellings_test.rb
233
+ - test/model_test.rb
234
+ - test/multi_search_test.rb
235
+ - test/multi_tenancy_test.rb
236
+ - test/order_test.rb
237
+ - test/pagination_test.rb
238
+ - test/partial_reindex_test.rb
239
+ - test/query_test.rb
240
+ - test/reindex_test.rb
241
+ - test/reindex_v2_job_test.rb
242
+ - test/routing_test.rb
243
+ - test/should_index_test.rb
244
+ - test/similar_test.rb
245
+ - test/sql_test.rb
246
+ - test/suggest_test.rb
247
+ - test/support/kaminari.yml
248
+ - test/synonyms_test.rb
249
+ - test/test_helper.rb
250
+ - test/where_test.rb