searchkick 0.2.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2b15fd3f6aa1493ee75fee109a3420fb8e79bed7
4
- data.tar.gz: c8cf011a7e5fb72bb25fe131eaa655be2713def7
3
+ metadata.gz: c7af3f444676ffd5380a5fec201895f7f1ddbcbe
4
+ data.tar.gz: 07b653656f8914410a6bda9c1f0f3d1485d54465
5
5
  SHA512:
6
- metadata.gz: b7c45c3c3627c02a45c7cc4380d59404d334fb2a0e1e4a327b472cb14dcac12df59843f5bf146185c76998409fcadb850393b0c92e89e0f6a20972445fbe1735
7
- data.tar.gz: 616ca8f2a7776ca7f830cb2679bdbd7769460061107ed833f607896cfa2d637927011a40c958e026f0717de9471dd64f2bad157fbb55b79d93019132a7f8a605
6
+ metadata.gz: acde708f7c77cddf74af3b647e37f97014a16ab958b7e03b11e9774abfa02ab57c518c6f0d2647d39434f4f8ed3c3203e9a536a4ac2b2d0c961f80201cb8121c
7
+ data.tar.gz: 95ee8bd70933e4d04b0f04e96be972ed2075a065961b86da6f4164fe84ba013c2724c0801911299914b4554a405a5dc2f5751ba2843f0e80fed45b30055203c6
data/README.md CHANGED
@@ -167,14 +167,11 @@ Control what data is indexed with the `search_data` method. Call `Product.reinde
167
167
  ```ruby
168
168
  class Product < ActiveRecord::Base
169
169
  def search_data
170
- as_json only: [:name, :active], include: {brand: {only: [:city]}}
170
+ as_json only: [:name, :active]
171
171
  # or equivalently
172
172
  {
173
173
  name: name,
174
- active: active,
175
- brand: {
176
- city: brand.city
177
- }
174
+ active: active
178
175
  }
179
176
  end
180
177
  end
@@ -201,9 +198,9 @@ class Search < ActiveRecord::Base
201
198
  end
202
199
  ```
203
200
 
204
- Add conversions to the index.
201
+ You do **not** need to clean up the search queries. Searchkick automatically treats `apple` and `APPLES` the same.
205
202
 
206
- **Note**: You must specify the conversions field as of version `0.2.0`.
203
+ Next, add conversions to the index. You must specify the conversions field as of version `0.2.0`.
207
204
 
208
205
  ```ruby
209
206
  class Product < ActiveRecord::Base
@@ -329,6 +326,8 @@ heroku run rake searchkick:reindex CLASS=Product
329
326
 
330
327
  ## Reference
331
328
 
329
+ Searchkick requires Elasticsearch `0.90.0` or higher.
330
+
332
331
  Reindex one record
333
332
 
334
333
  ```ruby
@@ -336,6 +335,12 @@ product = Product.find 10
336
335
  product.reindex
337
336
  ```
338
337
 
338
+ Remove old indices
339
+
340
+ ```ruby
341
+ Product.clean_indices
342
+ ```
343
+
339
344
  Use a different index name
340
345
 
341
346
  ```ruby
@@ -17,28 +17,32 @@ module Searchkick
17
17
  end
18
18
 
19
19
  if a = Tire::Alias.find(alias_name)
20
- old_indices = a.indices.dup
21
- old_indices.each do |index|
20
+ a.indices.each do |index|
22
21
  a.indices.delete index
23
22
  end
24
23
 
25
24
  a.indices.add new_index
26
25
  response = a.save
27
26
 
28
- if response.success?
29
- old_indices.each do |index|
30
- i = Tire::Index.new(index)
31
- i.delete
32
- end
33
- end
27
+ clean_indices if response.success?
34
28
  else
35
- tire.index.delete
29
+ tire.index.delete if tire.index.exists?
36
30
  response = Tire::Alias.create(name: alias_name, indices: [new_index])
37
31
  end
38
32
 
39
33
  response.success? || (raise response.to_s)
40
34
  end
41
35
 
36
+ # remove old indices that start w/ index_name
37
+ def clean_indices
38
+ all_indices = JSON.parse(Tire::Configuration.client.get("#{Tire::Configuration.url}/_aliases").body)
39
+ indices = all_indices.select{|k, v| v["aliases"].empty? && k =~ /\A#{Regexp.escape(index_name)}_\d{14}\z/ }.keys
40
+ indices.each do |index|
41
+ Tire::Index.new(index).delete
42
+ end
43
+ indices
44
+ end
45
+
42
46
  private
43
47
 
44
48
  def searchkick_index_options
@@ -52,10 +52,10 @@ module Searchkick
52
52
  match fields, term, use_dis_max: false, boost: 10, operator: operator, analyzer: "searchkick_search2"
53
53
  end
54
54
  query do
55
- match fields, term, use_dis_max: false, fuzziness: 1, max_expansions: 1, operator: operator, analyzer: "searchkick_search"
55
+ match fields, term, use_dis_max: false, fuzziness: 1, max_expansions: 3, operator: operator, analyzer: "searchkick_search"
56
56
  end
57
57
  query do
58
- match fields, term, use_dis_max: false, fuzziness: 1, max_expansions: 1, operator: operator, analyzer: "searchkick_search2"
58
+ match fields, term, use_dis_max: false, fuzziness: 1, max_expansions: 3, operator: operator, analyzer: "searchkick_search2"
59
59
  end
60
60
  end
61
61
  end
@@ -1,3 +1,3 @@
1
1
  module Searchkick
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -0,0 +1,20 @@
1
+ require_relative "test_helper"
2
+
3
+ class TestIndex < Minitest::Unit::TestCase
4
+
5
+ def test_clean_indices
6
+ old_index = Tire::Index.new("products_development_20130801000000")
7
+ different_index = Tire::Index.new("items_development_20130801000000")
8
+
9
+ # create indexes
10
+ old_index.create
11
+ different_index.create
12
+
13
+ Product.clean_indices
14
+
15
+ assert Product.index.exists?
16
+ assert different_index.exists?
17
+ assert !old_index.exists?
18
+ end
19
+
20
+ end
data/test/match_test.rb CHANGED
@@ -60,6 +60,11 @@ class TestMatch < Minitest::Unit::TestCase
60
60
  assert_search "siracha", ["Sriracha"]
61
61
  end
62
62
 
63
+ def test_misspelling_multiple
64
+ store_names ["Greek Yogurt", "Green Onions"]
65
+ assert_search "greed", ["Greek Yogurt", "Green Onions"]
66
+ end
67
+
63
68
  def test_short_word
64
69
  store_names ["Finn"]
65
70
  assert_search "fin", ["Finn"]
data/test/test_helper.rb CHANGED
@@ -63,7 +63,10 @@ end
63
63
  class Store < ActiveRecord::Base
64
64
  end
65
65
 
66
+ Product.index.delete if Product.index.exists?
66
67
  Product.reindex
68
+ sleep 1
69
+ Product.reindex # run twice for both index paths
67
70
 
68
71
  class MiniTest::Unit::TestCase
69
72
 
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: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-11 00:00:00.000000000 Z
11
+ date: 2013-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tire
@@ -131,6 +131,7 @@ files:
131
131
  - searchkick.gemspec
132
132
  - test/boost_test.rb
133
133
  - test/facets_test.rb
134
+ - test/index_test.rb
134
135
  - test/match_test.rb
135
136
  - test/sql_test.rb
136
137
  - test/suggest_test.rb
@@ -163,6 +164,7 @@ summary: Search made easy
163
164
  test_files:
164
165
  - test/boost_test.rb
165
166
  - test/facets_test.rb
167
+ - test/index_test.rb
166
168
  - test/match_test.rb
167
169
  - test/sql_test.rb
168
170
  - test/suggest_test.rb