searchkick_bharthur 0.0.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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.travis.yml +44 -0
  4. data/CHANGELOG.md +360 -0
  5. data/Gemfile +8 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +1443 -0
  8. data/Rakefile +8 -0
  9. data/lib/searchkick/index.rb +662 -0
  10. data/lib/searchkick/logging.rb +185 -0
  11. data/lib/searchkick/middleware.rb +12 -0
  12. data/lib/searchkick/model.rb +105 -0
  13. data/lib/searchkick/query.rb +845 -0
  14. data/lib/searchkick/reindex_job.rb +26 -0
  15. data/lib/searchkick/reindex_v2_job.rb +23 -0
  16. data/lib/searchkick/results.rb +211 -0
  17. data/lib/searchkick/tasks.rb +33 -0
  18. data/lib/searchkick/version.rb +3 -0
  19. data/lib/searchkick.rb +159 -0
  20. data/searchkick.gemspec +28 -0
  21. data/test/aggs_test.rb +115 -0
  22. data/test/autocomplete_test.rb +65 -0
  23. data/test/boost_test.rb +144 -0
  24. data/test/callbacks_test.rb +27 -0
  25. data/test/ci/before_install.sh +21 -0
  26. data/test/dangerous_reindex_test.rb +27 -0
  27. data/test/facets_test.rb +90 -0
  28. data/test/gemfiles/activerecord31.gemfile +7 -0
  29. data/test/gemfiles/activerecord32.gemfile +7 -0
  30. data/test/gemfiles/activerecord40.gemfile +8 -0
  31. data/test/gemfiles/activerecord41.gemfile +8 -0
  32. data/test/gemfiles/activerecord50.gemfile +7 -0
  33. data/test/gemfiles/apartment.gemfile +8 -0
  34. data/test/gemfiles/mongoid2.gemfile +7 -0
  35. data/test/gemfiles/mongoid3.gemfile +6 -0
  36. data/test/gemfiles/mongoid4.gemfile +7 -0
  37. data/test/gemfiles/mongoid5.gemfile +7 -0
  38. data/test/gemfiles/nobrainer.gemfile +6 -0
  39. data/test/highlight_test.rb +63 -0
  40. data/test/index_test.rb +120 -0
  41. data/test/inheritance_test.rb +78 -0
  42. data/test/match_test.rb +227 -0
  43. data/test/misspellings_test.rb +46 -0
  44. data/test/model_test.rb +42 -0
  45. data/test/multi_search_test.rb +22 -0
  46. data/test/multi_tenancy_test.rb +22 -0
  47. data/test/order_test.rb +44 -0
  48. data/test/pagination_test.rb +53 -0
  49. data/test/query_test.rb +13 -0
  50. data/test/records_test.rb +8 -0
  51. data/test/reindex_job_test.rb +31 -0
  52. data/test/reindex_v2_job_test.rb +32 -0
  53. data/test/routing_test.rb +13 -0
  54. data/test/should_index_test.rb +32 -0
  55. data/test/similar_test.rb +28 -0
  56. data/test/sql_test.rb +196 -0
  57. data/test/suggest_test.rb +80 -0
  58. data/test/synonyms_test.rb +54 -0
  59. data/test/test_helper.rb +361 -0
  60. data/test/where_test.rb +171 -0
  61. metadata +231 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 818186270af7ec5267bc549fc676bf129dadbb80
4
+ data.tar.gz: 102234acb915dc57f54cc654361ae760bed16092
5
+ SHA512:
6
+ metadata.gz: 4a5cca2aa2830fa4112f2fa702b36930f0fc7fe3b060a9c3802033f0d5a4193eb8fb1de073440345c8d8dacfd76262cd6c5eacf5cefbb15b3904e0947fd20de0
7
+ data.tar.gz: 273108babbce1dd1f6e0696d09d3f9364c8dd749b8b6a94e7dc6ef0692708779386e968ba0a25a6094ae964650c174387bfbeeb1ee6d88ecf011f7d24dc9711f
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ *.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.log
19
+ .DS_Store
20
+ .ruby-*
21
+ .idea/
22
+ *.sqlite3
data/.travis.yml ADDED
@@ -0,0 +1,44 @@
1
+ language: ruby
2
+ rvm: 2.2.5
3
+ services:
4
+ - elasticsearch
5
+ - mongodb
6
+ before_install:
7
+ - ./test/ci/before_install.sh
8
+ script: RUBYOPT=W0 bundle exec rake test
9
+ before_script:
10
+ - psql -c 'create database searchkick_test;' -U postgres
11
+ notifications:
12
+ email:
13
+ on_success: never
14
+ on_failure: change
15
+ gemfile:
16
+ - Gemfile
17
+ - test/gemfiles/activerecord50.gemfile
18
+ - test/gemfiles/activerecord41.gemfile
19
+ - test/gemfiles/activerecord40.gemfile
20
+ - test/gemfiles/activerecord32.gemfile
21
+ - test/gemfiles/activerecord31.gemfile
22
+ - test/gemfiles/mongoid2.gemfile
23
+ - test/gemfiles/mongoid3.gemfile
24
+ - test/gemfiles/mongoid4.gemfile
25
+ - test/gemfiles/mongoid5.gemfile
26
+ env:
27
+ - ELASTICSEARCH_VERSION=2.3.0
28
+ matrix:
29
+ include:
30
+ - gemfile: Gemfile
31
+ env: ELASTICSEARCH_VERSION=1.0.0
32
+ - gemfile: Gemfile
33
+ env: ELASTICSEARCH_VERSION=1.7.0
34
+ - gemfile: Gemfile
35
+ env: ELASTICSEARCH_VERSION=2.0.0
36
+ - gemfile: Gemfile
37
+ env: ELASTICSEARCH_VERSION=5.0.0-alpha2
38
+ # - gemfile: test/gemfiles/nobrainer.gemfile
39
+ # env: NOBRAINER=true
40
+ allow_failures:
41
+ - gemfile: Gemfile
42
+ env: ELASTICSEARCH_VERSION=5.0.0-alpha2
43
+ # - gemfile: test/gemfiles/nobrainer.gemfile
44
+ # env: NOBRAINER=true
data/CHANGELOG.md ADDED
@@ -0,0 +1,360 @@
1
+ ## 1.3.1
2
+
3
+ - Fixed error with Ruby 2.0
4
+ - Fixed error with indexing large fields
5
+
6
+ ## 1.3.0
7
+
8
+ - Added support for Elasticsearch 5.0 alpha
9
+ - Added support for phrase matches
10
+ - Added support for procs for `index_prefix` option
11
+
12
+ ## 1.2.1
13
+
14
+ - Added `multi_search` method
15
+ - Added support for routing for Elasticsearch 2
16
+ - Added support for `search_document_id` and `search_document_type` in models
17
+ - Fixed error with instrumentation for searching multiple models
18
+ - Fixed instrumentation for bulk updates
19
+
20
+ ## 1.2.0
21
+
22
+ - Fixed deprecation warnings with `alias_method_chain`
23
+ - Added `analyzed_only` option for large text fields
24
+ - Added `encoder` option to highlight
25
+ - Fixed issue in `similar` method with `per_page` option
26
+ - Added basic support for multiple models
27
+
28
+ ## 1.1.2
29
+
30
+ - Added bulk updates with `callbacks` method
31
+ - Added `bulk_delete` method
32
+ - Added `search_timeout` option
33
+ - Fixed bug with new location format for `boost_by_distance`
34
+
35
+ ## 1.1.1
36
+
37
+ - Added support for `{lat: lat, lon: lon}` as preferred format for locations
38
+
39
+ ## 1.1.0
40
+
41
+ - Added `below` option to misspellings to improve performance
42
+ - Fixed synonyms for `word_*` partial matches
43
+ - Added `searchable` option
44
+ - Added `similarity` option
45
+ - Added `match` option
46
+ - Added `word` option
47
+ - Added highlighted fields to `load: false`
48
+
49
+ ## 1.0.3
50
+
51
+ - Added support for Elasticsearch 2.1
52
+
53
+ ## 1.0.2
54
+
55
+ - Throw `Searchkick::ImportError` for errors when importing records
56
+ - Errors now inherit from `Searchkick::Error`
57
+ - Added `order` option to aggregations
58
+ - Added `mapping` method
59
+
60
+ ## 1.0.1
61
+
62
+ - Added aggregations method to get raw response
63
+ - Use `execute: false` for lazy loading
64
+ - Return nil when no aggs
65
+ - Added emoji search
66
+
67
+ ## 1.0.0
68
+
69
+ - Added support for Elasticsearch 2.0
70
+ - Added support for aggregations
71
+ - Added ability to use misspellings for partial matches
72
+ - Added `fragment_size` option for highlight
73
+ - Added `took` method to results
74
+
75
+ Breaking changes
76
+
77
+ - Raise `Searchkick::DangerousOperation` error when calling reindex with scope
78
+ - Enabled misspellings by default for partial matches
79
+ - Enabled transpositions by default for misspellings
80
+
81
+ ## 0.9.1
82
+
83
+ - `and` now matches `&`
84
+ - Added `transpositions` option to misspellings
85
+ - Added `boost_mode` and `log` options to `boost_by`
86
+ - Added `prefix_length` option to `misspellings`
87
+ - Added ability to set env
88
+
89
+ ## 0.9.0
90
+
91
+ - Much better performance for where queries if no facets
92
+ - Added basic support for regex
93
+ - Added support for routing
94
+ - Made `Searchkick.disable_callbacks` thread-safe
95
+
96
+ ## 0.8.7
97
+
98
+ - Fixed Mongoid import
99
+
100
+ ## 0.8.6
101
+
102
+ - Added support for NoBrainer
103
+ - Added `stem_conversions: false` option
104
+ - Added support for multiple `boost_where` values on the same field
105
+ - Added support for array of values for `boost_where`
106
+ - Fixed suggestions with partial match boost
107
+ - Fixed redefining existing instance methods in models
108
+
109
+ ## 0.8.5
110
+
111
+ - Added support for Elasticsearch 1.4
112
+ - Added `unsearchable` option
113
+ - Added `select: true` option
114
+ - Added `body` option
115
+
116
+ ## 0.8.4
117
+
118
+ - Added `boost_by_distance`
119
+ - More flexible highlight options
120
+ - Better `env` logic
121
+
122
+ ## 0.8.3
123
+
124
+ - Added support for ActiveJob
125
+ - Added `timeout` setting
126
+ - Fixed import with no records
127
+
128
+ ## 0.8.2
129
+
130
+ - Added `async` to `callbacks` option
131
+ - Added `wordnet` option
132
+ - Added `edit_distance` option to eventually replace `distance` option
133
+ - Catch misspelling of `misspellings` option
134
+ - Improved logging
135
+
136
+ ## 0.8.1
137
+
138
+ - Added `search_method_name` option
139
+ - Fixed `order` for array of hashes
140
+ - Added support for Mongoid 2
141
+
142
+ ## 0.8.0
143
+
144
+ - Added support for Elasticsearch 1.2
145
+
146
+ ## 0.7.9
147
+
148
+ - Added `tokens` method
149
+ - Added `json` option
150
+ - Added exact matches
151
+ - Added `prev_page` for Kaminari pagination
152
+ - Added `import` option to reindex
153
+
154
+ ## 0.7.8
155
+
156
+ - Added `boost_by` and `boost_where` options
157
+ - Added ability to boost fields - `name^10`
158
+ - Added `select` option for `load: false`
159
+
160
+ ## 0.7.7
161
+
162
+ - Added support for automatic failover
163
+ - Fixed `operator` option (and default) for partial matches
164
+
165
+ ## 0.7.6
166
+
167
+ - Added `stats` option to facets
168
+ - Added `padding` option
169
+
170
+ ## 0.7.5
171
+
172
+ - Do not throw errors when index becomes out of sync with database
173
+ - Added custom exception types
174
+ - Fixed `offset` and `offset_value`
175
+
176
+ ## 0.7.4
177
+
178
+ - Fixed reindex with inheritance
179
+
180
+ ## 0.7.3
181
+
182
+ - Fixed multi-index searches
183
+ - Fixed suggestions for partial matches
184
+ - Added `offset` and `length` for improved pagination
185
+
186
+ ## 0.7.2
187
+
188
+ - Added smart facets
189
+ - Added more fields to `load: false` result
190
+ - Fixed logging for multi-index searches
191
+ - Added `first_page?` and `last_page?` for improved Kaminari support
192
+
193
+ ## 0.7.1
194
+
195
+ - Fixed huge issue w/ zero-downtime reindexing on 0.90
196
+
197
+ ## 0.7.0
198
+
199
+ - Added support for Elasticsearch 1.1
200
+ - Dropped support for Elasticsearch below 0.90.4 (unfortunate side effect of above)
201
+
202
+ ## 0.6.3
203
+
204
+ - Removed patron since no support for Windows
205
+ - Added error if `searchkick` is called multiple times
206
+
207
+ ## 0.6.2
208
+
209
+ - Added logging
210
+ - Fixed index_name option
211
+ - Added ability to use proc as the index name
212
+
213
+ ## 0.6.1
214
+
215
+ - Fixed huge issue w/ zero-downtime reindexing on 0.90 and elasticsearch-ruby 1.0
216
+ - Restore load: false behavior
217
+ - Restore total_entries method
218
+
219
+ ## 0.6.0
220
+
221
+ - Moved to elasticsearch-ruby
222
+ - Added support for modifying the query and viewing the response
223
+ - Added support for page_entries_info method
224
+
225
+ ## 0.5.3
226
+
227
+ - Fixed bug w/ word_* queries
228
+
229
+ ## 0.5.2
230
+
231
+ - Use after_commit hook for ActiveRecord to prevent data inconsistencies
232
+
233
+ ## 0.5.1
234
+
235
+ - Replaced stop words with common terms query
236
+ - Added language option
237
+ - Fixed bug with empty array in where clause
238
+ - Fixed bug with MongoDB integer _id
239
+ - Fixed reindex bug when callbacks disabled
240
+
241
+ ## 0.5.0
242
+
243
+ - Better control over partial matches
244
+ - Added merge_mappings option
245
+ - Added batch_size option
246
+ - Fixed bug with nil where clauses
247
+
248
+ ## 0.4.2
249
+
250
+ - Added `should_index?` method to control which records are indexed
251
+ - Added ability to temporarily disable callbacks
252
+ - Added custom mappings
253
+
254
+ ## 0.4.1
255
+
256
+ - Fixed issue w/ inheritance mapping
257
+
258
+ ## 0.4.0
259
+
260
+ - Added support for Mongoid 4
261
+ - Added support for multiple locations
262
+
263
+ ## 0.3.5
264
+
265
+ - Added facet ranges
266
+ - Added all operator
267
+
268
+ ## 0.3.4
269
+
270
+ - Added highlighting
271
+ - Added :distance option to misspellings
272
+ - Fixed issue w/ BigDecimal serialization
273
+
274
+ ## 0.3.3
275
+
276
+ - Better error messages
277
+ - Added where: {field: nil} queries
278
+
279
+ ## 0.3.2
280
+
281
+ - Added support for single table inheritance
282
+ - Removed Tire::Model::Search
283
+
284
+ ## 0.3.1
285
+
286
+ - Added index_prefix option
287
+ - Fixed ES issue with incorrect facet counts
288
+ - Added option to turn off special characters
289
+
290
+ ## 0.3.0
291
+
292
+ - Fixed reversed coordinates
293
+ - Added bounded by a box queries
294
+ - Expanded `or` queries
295
+
296
+ ## 0.2.8
297
+
298
+ - Added option to disable callbacks
299
+ - Fixed bug with facets with Elasticsearch 0.90.5
300
+
301
+ ## 0.2.7
302
+
303
+ - Added limit to facet
304
+ - Improved similar items
305
+
306
+ ## 0.2.6
307
+
308
+ - Added option to disable misspellings
309
+
310
+ ## 0.2.5
311
+
312
+ - Added geospartial searches
313
+ - Create alias before importing document if no alias exists
314
+ - Fixed exception when :per_page option is a string
315
+ - Check `RAILS_ENV` if `RACK_ENV` is not set
316
+
317
+ ## 0.2.4
318
+
319
+ - Use `to_hash` instead of `as_json` for default `search_data` method
320
+ - Works for Mongoid 1.3
321
+ - Use one shard in test environment for consistent scores
322
+
323
+ ## 0.2.3
324
+
325
+ - Setup Travis
326
+ - Clean old indices before reindex
327
+ - Search for `*` returns all results
328
+ - Fixed pagination
329
+ - Added `similar` method
330
+
331
+ ## 0.2.2
332
+
333
+ - Clean old indices after reindex
334
+ - More expansions for fuzzy queries
335
+
336
+ ## 0.2.1
337
+
338
+ - Added Rails logger
339
+ - Only fetch ids when `load: true`
340
+
341
+ ## 0.2.0
342
+
343
+ - Added autocomplete
344
+ - Added “Did you mean” suggestions
345
+ - Added personalized searches
346
+
347
+ ## 0.1.4
348
+
349
+ - Bug fix
350
+
351
+ ## 0.1.3
352
+
353
+ - Changed edit distance to one for misspellings
354
+ - Raise errors when indexing fails
355
+ - Fixed pagination
356
+ - Fixed :include option
357
+
358
+ ## 0.1.2
359
+
360
+ - Launch
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in searchkick.gemspec
4
+ gemspec
5
+
6
+ gem "sqlite3"
7
+ gem "activerecord", "~> 4.2.0"
8
+ gem "gemoji-parser"
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013-2016 Andrew Kane
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.