searchkick 4.4.2 → 4.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 782d732ce3dca45ba3654f3afa2ee565fc396543179dbdc87a0ee7418a151a3c
4
- data.tar.gz: 2752fb40094f068a97e77009634fccf7a1433182294835ad077a66632d43bcb6
3
+ metadata.gz: e7aee5e029431f1fd4579a1d516685ba2920de38baf458ecd703e5500b9c0cee
4
+ data.tar.gz: 6dde3b60089496b874e43870c1506c54e25d0f5ca857fb96f1aa29880a110260
5
5
  SHA512:
6
- metadata.gz: b1125b09caaf20b0dcc8aa7c55755e257338499dda6d09427e139f9167d9e5b2e9971657b830352babe8100c510236412fbaa5a6edf9617c8eefcbe7aff4d2c7
7
- data.tar.gz: b111187e5e1d05f19120f850833a491405727811fde6b31465f6021dffdd01b44e55c6e9a19b930246a4a92671ddda62aa65f9fa6fb6793342a5581009961985
6
+ metadata.gz: 5a242a1c7190e5545bb0c9ffb902d711c360637da770c4f35a560abb34889f3cd8bec4e6efc989aad18c8c9c7aef00e46a7d70a3631e66f44322894f9540ce84
7
+ data.tar.gz: bed6eb9390d71a22791bb7a294c5e2adc2f26dec43c946f9fa5f3c850e0dc44d428e9ee8eda828c218b559484f35c8fe12b9503eaae0a643f0d72ee8e004a88e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 4.4.3 (2020-02-25)
2
+
3
+ - Added support for Hunspell
4
+ - Fixed warning about accessing system indices
5
+
1
6
  ## 4.4.2 (2020-11-23)
2
7
 
3
8
  - Added `missing_records` method to results
data/README.md CHANGED
@@ -176,7 +176,7 @@ Get the full response from Elasticsearch
176
176
  results.response
177
177
  ```
178
178
 
179
- **Note:** By default, Elasticsearch [limits paging](#deep-paging-master) to the first 10,000 results for performance. With Elasticsearch 7, this applies to the total count as well.
179
+ **Note:** By default, Elasticsearch [limits paging](#deep-paging) to the first 10,000 results for performance. With Elasticsearch 7, this applies to the total count as well.
180
180
 
181
181
  ### Boosting
182
182
 
@@ -209,7 +209,7 @@ boost_by_recency: {created_at: {scale: "7d", decay: 0.5}}
209
209
 
210
210
  You can also boost by:
211
211
 
212
- - [Conversions](#keep-getting-better)
212
+ - [Conversions](#intelligent-search)
213
213
  - [Distance](#boost-by-distance)
214
214
 
215
215
  ### Get Everything
@@ -311,7 +311,7 @@ class Product < ApplicationRecord
311
311
  end
312
312
  ```
313
313
 
314
- See the [list of stemmers](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stemmer-tokenfilter.html). A few languages require plugins:
314
+ See the [list of languages](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stemmer-tokenfilter.html). A few languages require plugins:
315
315
 
316
316
  - `chinese` - [analysis-ik plugin](https://github.com/medcl/elasticsearch-analysis-ik)
317
317
  - `chinese2` - [analysis-smartcn plugin](https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-smartcn.html)
@@ -322,6 +322,14 @@ See the [list of stemmers](https://www.elastic.co/guide/en/elasticsearch/referen
322
322
  - `ukrainian` - [analysis-ukrainian plugin](https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-ukrainian.html)
323
323
  - `vietnamese` - [analysis-vietnamese plugin](https://github.com/duydo/elasticsearch-analysis-vietnamese)
324
324
 
325
+ You can also use a Hunspell dictionary for stemming.
326
+
327
+ ```ruby
328
+ class Product < ApplicationRecord
329
+ searchkick stemmer: {type: "hunspell", locale: "en_US"}
330
+ end
331
+ ```
332
+
325
333
  Disable stemming with:
326
334
 
327
335
  ```ruby
@@ -1217,7 +1225,7 @@ Searchkick uses `ENV["ELASTICSEARCH_URL"]` for the Elasticsearch server. This de
1217
1225
  - [Elastic Cloud](#elastic-cloud)
1218
1226
  - [Heroku](#heroku)
1219
1227
  - [Amazon Elasticsearch Service](#amazon-elasticsearch-service)
1220
- - [Self-Hosted and Other](#other)
1228
+ - [Self-Hosted and Other](#self-hosted-and-other)
1221
1229
 
1222
1230
  ### Elastic Cloud
1223
1231
 
@@ -1469,7 +1477,7 @@ Product.search_index.promote(index_name, update_refresh_interval: true)
1469
1477
 
1470
1478
  ### Queuing
1471
1479
 
1472
- Push ids of records needing reindexed to a queue and reindex in bulk for better performance. First, set up Redis in an initializer. We recommend using [connection_pool](https://github.com/mperham/connection_pool).
1480
+ Push ids of records needing reindexing to a queue and reindex in bulk for better performance. First, set up Redis in an initializer. We recommend using [connection_pool](https://github.com/mperham/connection_pool).
1473
1481
 
1474
1482
  ```ruby
1475
1483
  Searchkick.redis = ConnectionPool.new { Redis.new }
@@ -105,7 +105,7 @@ module Searchkick
105
105
  indices =
106
106
  begin
107
107
  if client.indices.respond_to?(:get_alias)
108
- client.indices.get_alias
108
+ client.indices.get_alias(index: "#{name}*")
109
109
  else
110
110
  client.indices.get_aliases
111
111
  end
@@ -153,6 +153,7 @@ module Searchkick
153
153
  }
154
154
  }
155
155
 
156
+ raise ArgumentError, "Can't pass both language and stemmer" if options[:stemmer] && language
156
157
  update_language(settings, language)
157
158
  update_stemming(settings)
158
159
 
@@ -286,6 +287,18 @@ module Searchkick
286
287
  end
287
288
 
288
289
  def update_stemming(settings)
290
+ if options[:stemmer]
291
+ stemmer = options[:stemmer]
292
+ # could also support snowball and stemmer
293
+ case stemmer[:type]
294
+ when "hunspell"
295
+ # supports all token filter options
296
+ settings[:analysis][:filter][:searchkick_stemmer] = stemmer
297
+ else
298
+ raise ArgumentError, "Unknown stemmer: #{stemmer[:type]}"
299
+ end
300
+ end
301
+
289
302
  stem = options[:stem]
290
303
 
291
304
  # language analyzer used
@@ -6,7 +6,7 @@ module Searchkick
6
6
  unknown_keywords = options.keys - [:_all, :_type, :batch_size, :callbacks, :case_sensitive, :conversions, :deep_paging, :default_fields,
7
7
  :filterable, :geo_shape, :highlight, :ignore_above, :index_name, :index_prefix, :inheritance, :language,
8
8
  :locations, :mappings, :match, :merge_mappings, :routing, :searchable, :search_synonyms, :settings, :similarity,
9
- :special_characters, :stem, :stem_conversions, :stem_exclusion, :stemmer_override, :suggest, :synonyms, :text_end,
9
+ :special_characters, :stem, :stemmer, :stem_conversions, :stem_exclusion, :stemmer_override, :suggest, :synonyms, :text_end,
10
10
  :text_middle, :text_start, :word, :wordnet, :word_end, :word_middle, :word_start]
11
11
  raise ArgumentError, "unknown keywords: #{unknown_keywords.join(", ")}" if unknown_keywords.any?
12
12
 
@@ -1,3 +1,3 @@
1
1
  module Searchkick
2
- VERSION = "4.4.2"
2
+ VERSION = "4.4.3"
3
3
  end
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: 4.4.2
4
+ version: 4.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2021-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  requirements: []
105
- rubygems_version: 3.1.4
105
+ rubygems_version: 3.2.3
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: Intelligent search made easy with Rails and Elasticsearch