searchkick 0.2.1 → 0.2.2

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
  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