picky 3.6.7 → 3.6.8

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 (63) hide show
  1. data/lib/picky/backends/file/basic.rb +1 -1
  2. data/lib/picky/backends/file/json.rb +5 -1
  3. data/lib/picky/backends/file.rb +7 -0
  4. data/lib/picky/backends/memory.rb +7 -0
  5. data/lib/picky/backends/redis/basic.rb +3 -11
  6. data/lib/picky/backends/redis/directly_manipulable.rb +48 -0
  7. data/lib/picky/backends/redis/list.rb +39 -15
  8. data/lib/picky/backends/redis/string.rb +17 -9
  9. data/lib/picky/backends/redis.rb +102 -66
  10. data/lib/picky/backends/sqlite/array.rb +38 -0
  11. data/lib/picky/backends/sqlite/basic.rb +100 -0
  12. data/lib/picky/backends/sqlite/directly_manipulable.rb +42 -0
  13. data/lib/picky/backends/sqlite/value.rb +34 -0
  14. data/lib/picky/backends/sqlite.rb +14 -4
  15. data/lib/picky/bundle.rb +12 -5
  16. data/lib/picky/bundle_indexed.rb +15 -2
  17. data/lib/picky/bundle_indexing.rb +6 -5
  18. data/lib/picky/bundle_realtime.rb +22 -31
  19. data/lib/picky/categories_realtime.rb +1 -1
  20. data/lib/picky/category_indexed.rb +1 -1
  21. data/lib/picky/category_indexing.rb +7 -5
  22. data/lib/picky/category_realtime.rb +17 -5
  23. data/lib/picky/generators/strategy.rb +4 -0
  24. data/lib/picky/index_indexing.rb +1 -4
  25. data/lib/picky/index_realtime.rb +16 -6
  26. data/lib/picky/indexers/base.rb +7 -1
  27. data/lib/picky/indexes.rb +1 -0
  28. data/lib/picky/loader.rb +11 -7
  29. data/lib/picky/query/allocation.rb +1 -1
  30. data/lib/picky/query/indexes.rb +2 -2
  31. data/lib/picky/query/token.rb +1 -1
  32. data/lib/picky/search.rb +20 -8
  33. data/lib/picky/tokenizer.rb +6 -6
  34. data/lib/picky/wrappers/bundle/delegators.rb +3 -1
  35. data/spec/category_realtime_spec.rb +33 -0
  36. data/spec/functional/backends/file_spec.rb +98 -0
  37. data/spec/functional/backends/memory_spec.rb +96 -0
  38. data/spec/functional/backends/redis_spec.rb +107 -0
  39. data/spec/functional/backends/sqlite_spec.rb +104 -0
  40. data/spec/{specific → functional}/dynamic_weights_spec.rb +0 -0
  41. data/spec/{specific → functional}/exact_first_spec.rb +2 -4
  42. data/spec/functional/max_allocations_spec.rb +33 -0
  43. data/spec/{specific → functional}/realtime_spec.rb +0 -0
  44. data/spec/{specific → functional}/regression_spec.rb +0 -0
  45. data/spec/{specific → functional}/speed_spec.rb +0 -0
  46. data/spec/lib/backends/file/basic_spec.rb +1 -1
  47. data/spec/lib/backends/redis/basic_spec.rb +12 -13
  48. data/spec/lib/backends/redis/directly_manipulable_spec.rb +91 -0
  49. data/spec/lib/backends/redis/float_spec.rb +17 -17
  50. data/spec/lib/backends/redis/list_spec.rb +9 -9
  51. data/spec/lib/backends/sqlite/array_spec.rb +143 -0
  52. data/spec/lib/backends/sqlite/directly_manipulable_spec.rb +65 -0
  53. data/spec/lib/backends/sqlite/{db_spec.rb → value_spec.rb} +2 -7
  54. data/spec/lib/backends/sqlite_spec.rb +22 -20
  55. data/spec/lib/category_indexed_spec.rb +1 -1
  56. data/spec/lib/category_indexing_spec.rb +2 -2
  57. data/spec/lib/index_indexing_spec.rb +0 -7
  58. data/spec/lib/index_realtime_spec.rb +34 -0
  59. data/spec/lib/indexed/bundle_realtime_spec.rb +166 -75
  60. data/spec/lib/indexers/base_spec.rb +13 -1
  61. data/spec/lib/search_spec.rb +31 -20
  62. metadata +58 -34
  63. data/lib/picky/backends/sqlite/db.rb +0 -84
@@ -13,7 +13,7 @@ describe Picky::Bundle do
13
13
  end
14
14
 
15
15
  it 'is by default empty' do
16
- @bundle.realtime_mapping.should == {}
16
+ @bundle.realtime.should == {}
17
17
  end
18
18
  it 'is by default empty' do
19
19
  @bundle.weights.should == {}
@@ -25,90 +25,181 @@ describe Picky::Bundle do
25
25
  @bundle.similarity.should == {}
26
26
  end
27
27
 
28
- describe 'combined' do
29
- it 'works correctly' do
30
- @bundle.add 1, :title
31
- @bundle.add 2, :title
32
-
33
- @bundle.realtime_mapping.should == { 1 => [:title], 2 => [:title] }
34
- @bundle.inverted.should == { :title => [2,1] }
35
- @bundle.weights.should == { :title => 0.693 }
36
- @bundle.similarity.should == { :TTL => [:title] }
37
- end
38
- it 'works correctly' do
39
- @bundle.add 1, :title
40
- @bundle.add 2, :title
41
- @bundle.remove 1
42
- @bundle.remove 2
43
-
44
- @bundle.realtime_mapping.should == {}
45
- @bundle.weights.should == {}
46
- @bundle.inverted.should == {}
47
- @bundle.similarity.should == {}
48
- end
49
- it 'works correctly' do
50
- @bundle.add 1, :title
51
- @bundle.add 1, :other
52
- @bundle.add 1, :whatever
53
- @bundle.remove 1
54
-
55
- @bundle.realtime_mapping.should == {}
56
- @bundle.weights.should == {}
57
- @bundle.inverted.should == {}
58
- @bundle.similarity.should == {}
59
- end
60
- it 'works correctly' do
61
- @bundle.add 1, :title
62
- @bundle.add 2, :thing
63
- @bundle.add 1, :other
64
- @bundle.remove 1
65
-
66
- @bundle.realtime_mapping.should == { 2 => [:thing] }
67
- @bundle.weights.should == { :thing => 0.0 }
68
- @bundle.inverted.should == { :thing => [2] }
69
- @bundle.similarity.should == { :"0NK" => [:thing] }
28
+ context 'strings' do
29
+ describe 'combined' do
30
+ it 'works correctly' do
31
+ @bundle.add 1, 'title'
32
+ @bundle.add 2, 'title'
33
+
34
+ @bundle.realtime.should == { 1 => ['title'], 2 => ['title'] }
35
+ @bundle.inverted.should == { 'title' => [2,1] }
36
+ @bundle.weights.should == { 'title' => 0.693 }
37
+ @bundle.similarity.should == { 'TTL' => ['title'] }
38
+ end
39
+ it 'works correctly' do
40
+ @bundle.add 1, 'title'
41
+ @bundle.add 2, 'title'
42
+ @bundle.remove 1
43
+ @bundle.remove 2
44
+
45
+ @bundle.realtime.should == {}
46
+ @bundle.weights.should == {}
47
+ @bundle.inverted.should == {}
48
+ @bundle.similarity.should == {}
49
+ end
50
+ it 'works correctly' do
51
+ @bundle.add 1, 'title'
52
+ @bundle.add 1, 'other'
53
+ @bundle.add 1, 'whatever'
54
+ @bundle.remove 1
55
+
56
+ @bundle.realtime.should == {}
57
+ @bundle.weights.should == {}
58
+ @bundle.inverted.should == {}
59
+ @bundle.similarity.should == {}
60
+ end
61
+ it 'works correctly' do
62
+ @bundle.add 1, 'title'
63
+ @bundle.add 2, 'thing'
64
+ @bundle.add 1, 'other'
65
+ @bundle.remove 1
66
+
67
+ @bundle.realtime.should == { 2 => ['thing'] }
68
+ @bundle.weights.should == { 'thing' => 0.0 }
69
+ @bundle.inverted.should == { 'thing' => [2] }
70
+ @bundle.similarity.should == { '0NK' => ['thing'] }
71
+ end
72
+ it 'works correctly' do
73
+ @bundle.add 1, 'title'
74
+ @bundle.add 1, 'title'
75
+
76
+ @bundle.realtime.should == { 1 => ['title'] }
77
+ @bundle.weights.should == { 'title' => 0.0 }
78
+ @bundle.inverted.should == { 'title' => [1] }
79
+ @bundle.similarity.should == { 'TTL' => ['title'] }
80
+ end
81
+ it 'works correctly' do
82
+ @bundle.add 1, 'title'
83
+ @bundle.remove 1
84
+ @bundle.remove 1
85
+
86
+ @bundle.realtime.should == {}
87
+ @bundle.weights.should == {}
88
+ @bundle.inverted.should == {}
89
+ @bundle.similarity.should == {}
90
+ end
70
91
  end
71
- it 'works correctly' do
72
- @bundle.add 1, :title
73
- @bundle.add 1, :title
74
-
75
- @bundle.realtime_mapping.should == { 1 => [:title] }
76
- @bundle.weights.should == { :title => 0.0 }
77
- @bundle.inverted.should == { :title => [1] }
78
- @bundle.similarity.should == { :TTL => [:title] }
79
- end
80
- it 'works correctly' do
81
- @bundle.add 1, :title
82
- @bundle.remove 1
83
- @bundle.remove 1
84
-
85
- @bundle.realtime_mapping.should == {}
86
- @bundle.weights.should == {}
87
- @bundle.inverted.should == {}
88
- @bundle.similarity.should == {}
92
+
93
+ describe 'add' do
94
+ it 'works correctly' do
95
+ @bundle.add 1, 'title'
96
+
97
+ @bundle.realtime.should == { 1 => ['title'] }
98
+
99
+ @bundle.add 2, 'other'
100
+
101
+ @bundle.realtime.should == { 1 => ['title'], 2 => ['other'] }
102
+
103
+ @bundle.add 1, 'thing'
104
+
105
+ @bundle.realtime.should == { 1 => ['title', 'thing'], 2 => ['other'] }
106
+ end
107
+ it 'works correctly' do
108
+ @bundle.add 1, 'title'
109
+
110
+ @bundle.weights.should == { 'title' => 0.0 }
111
+ @bundle.inverted.should == { 'title' => [1] }
112
+ @bundle.similarity.should == { 'TTL' => ['title'] }
113
+ end
89
114
  end
90
115
  end
91
116
 
92
- describe 'add' do
93
- it 'works correctly' do
94
- @bundle.add 1, :title
117
+ context 'symbols' do
118
+ describe 'combined' do
119
+ it 'works correctly' do
120
+ @bundle.add 1, :title
121
+ @bundle.add 2, :title
122
+
123
+ @bundle.realtime.should == { 1 => [:title], 2 => [:title] }
124
+ @bundle.inverted.should == { :title => [2,1] }
125
+ @bundle.weights.should == { :title => 0.693 }
126
+ @bundle.similarity.should == { :TTL => [:title] }
127
+ end
128
+ it 'works correctly' do
129
+ @bundle.add 1, :title
130
+ @bundle.add 2, :title
131
+ @bundle.remove 1
132
+ @bundle.remove 2
133
+
134
+ @bundle.realtime.should == {}
135
+ @bundle.weights.should == {}
136
+ @bundle.inverted.should == {}
137
+ @bundle.similarity.should == {}
138
+ end
139
+ it 'works correctly' do
140
+ @bundle.add 1, :title
141
+ @bundle.add 1, :other
142
+ @bundle.add 1, :whatever
143
+ @bundle.remove 1
144
+
145
+ @bundle.realtime.should == {}
146
+ @bundle.weights.should == {}
147
+ @bundle.inverted.should == {}
148
+ @bundle.similarity.should == {}
149
+ end
150
+ it 'works correctly' do
151
+ @bundle.add 1, :title
152
+ @bundle.add 2, :thing
153
+ @bundle.add 1, :other
154
+ @bundle.remove 1
155
+
156
+ @bundle.realtime.should == { 2 => [:thing] }
157
+ @bundle.weights.should == { :thing => 0.0 }
158
+ @bundle.inverted.should == { :thing => [2] }
159
+ @bundle.similarity.should == { :"0NK" => [:thing] }
160
+ end
161
+ it 'works correctly' do
162
+ @bundle.add 1, :title
163
+ @bundle.add 1, :title
164
+
165
+ @bundle.realtime.should == { 1 => [:title] }
166
+ @bundle.weights.should == { :title => 0.0 }
167
+ @bundle.inverted.should == { :title => [1] }
168
+ @bundle.similarity.should == { :TTL => [:title] }
169
+ end
170
+ it 'works correctly' do
171
+ @bundle.add 1, :title
172
+ @bundle.remove 1
173
+ @bundle.remove 1
174
+
175
+ @bundle.realtime.should == {}
176
+ @bundle.weights.should == {}
177
+ @bundle.inverted.should == {}
178
+ @bundle.similarity.should == {}
179
+ end
180
+ end
95
181
 
96
- @bundle.realtime_mapping.should == { 1 => [:title] }
182
+ describe 'add' do
183
+ it 'works correctly' do
184
+ @bundle.add 1, :title
97
185
 
98
- @bundle.add 2, :other
186
+ @bundle.realtime.should == { 1 => [:title] }
99
187
 
100
- @bundle.realtime_mapping.should == { 1 => [:title], 2 => [:other] }
188
+ @bundle.add 2, :other
101
189
 
102
- @bundle.add 1, :thing
190
+ @bundle.realtime.should == { 1 => [:title], 2 => [:other] }
103
191
 
104
- @bundle.realtime_mapping.should == { 1 => [:title, :thing], 2 => [:other] }
105
- end
106
- it 'works correctly' do
107
- @bundle.add 1, :title
192
+ @bundle.add 1, :thing
193
+
194
+ @bundle.realtime.should == { 1 => [:title, :thing], 2 => [:other] }
195
+ end
196
+ it 'works correctly' do
197
+ @bundle.add 1, :title
108
198
 
109
- @bundle.weights.should == { :title => 0.0 }
110
- @bundle.inverted.should == { :title => [1] }
111
- @bundle.similarity.should == { :TTL => [:title] }
199
+ @bundle.weights.should == { :title => 0.0 }
200
+ @bundle.inverted.should == { :title => [1] }
201
+ @bundle.similarity.should == { :TTL => [:title] }
202
+ end
112
203
  end
113
204
  end
114
205
 
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Picky::Indexers::Base do
4
4
 
5
- let(:some_index_or_category) { stub :some_index_or_category, :name => 'some index or category' }
5
+ let(:some_index_or_category) { stub :some_index_or_category, :name => 'some_index_or_category' }
6
6
  let(:indexer) { described_class.new some_index_or_category }
7
7
 
8
8
  describe 'index_or_category' do
@@ -17,9 +17,21 @@ describe Picky::Indexers::Base do
17
17
 
18
18
  indexer.source
19
19
  end
20
+ it 'raises when none is there' do
21
+ some_index_or_category.should_receive(:source).any_number_of_times.and_return
22
+
23
+ indexer.stub! :process
24
+
25
+ expect {
26
+ indexer.index []
27
+ }.to raise_error("Trying to index without a source for some_index_or_category.")
28
+ end
20
29
  end
21
30
 
22
31
  describe 'index' do
32
+ before(:each) do
33
+ some_index_or_category.should_receive(:source).any_number_of_times.and_return :some_source
34
+ end
23
35
  it 'processes' do
24
36
  categories = stub :categories, :empty => nil, :cache => nil
25
37
 
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Picky::Search do
6
-
6
+
7
7
  before(:each) do
8
8
  @type = stub :type
9
9
  @index = stub :some_index,
@@ -11,19 +11,19 @@ describe Picky::Search do
11
11
  :each_category => [],
12
12
  :backend => Picky::Backends::Memory.new
13
13
  end
14
-
14
+
15
15
  describe 'tokenized' do
16
16
  let(:search) { described_class.new }
17
17
  it 'delegates to the tokenizer' do
18
18
  tokenizer = stub :tokenizer
19
19
  search.stub! :tokenizer => tokenizer
20
-
20
+
21
21
  tokenizer.should_receive(:tokenize).once.with(:some_text).and_return [['some_text'], [:some_original]]
22
-
22
+
23
23
  search.tokenized :some_text
24
24
  end
25
25
  end
26
-
26
+
27
27
  describe 'boost' do
28
28
  let(:search) do
29
29
  described_class.new do
@@ -35,7 +35,18 @@ describe Picky::Search do
35
35
  search.weights.should == Picky::Query::Weights.new([:a, :b] => 3, [:c, :d] => -1)
36
36
  end
37
37
  end
38
-
38
+
39
+ describe 'max_allocations' do
40
+ let(:search) do
41
+ described_class.new do
42
+ max_allocations 7
43
+ end
44
+ end
45
+ it 'works' do
46
+ search.max_allocations.should == 7
47
+ end
48
+ end
49
+
39
50
  describe 'tokenizer' do
40
51
  context 'no tokenizer predefined' do
41
52
  let(:search) { described_class.new }
@@ -52,54 +63,54 @@ describe Picky::Search do
52
63
  end
53
64
  end
54
65
  end
55
-
66
+
56
67
  end
57
-
68
+
58
69
  describe "weights handling" do
59
70
  it "creates a default weight when no weights are given" do
60
71
  search = described_class.new
61
-
72
+
62
73
  search.weights.should be_kind_of(Picky::Query::Weights)
63
74
  end
64
75
  it "handles :weights options when not yet wrapped" do
65
76
  search = described_class.new do boost [:a, :b] => +3 end
66
-
77
+
67
78
  search.weights.should be_kind_of(Picky::Query::Weights)
68
79
  end
69
80
  it "handles :weights options when already wrapped" do
70
81
  search = described_class.new do boost Picky::Query::Weights.new([:a, :b] => +3) end
71
-
82
+
72
83
  search.weights.should be_kind_of(Picky::Query::Weights)
73
84
  end
74
85
  end
75
-
86
+
76
87
  describe "search" do
77
88
  before(:each) do
78
89
  @search = described_class.new
79
90
  end
80
91
  it "delegates to search_with correctly" do
81
92
  @search.stub! :tokenized => :tokens
82
-
93
+
83
94
  @search.should_receive(:search_with).once.with :tokens, 20, 10, :text
84
-
95
+
85
96
  @search.search :text, 20, 10
86
97
  end
87
98
  it "delegates to search_with correctly" do
88
99
  @search.stub! :tokenized => :tokens
89
-
100
+
90
101
  @search.should_receive(:search_with).once.with :tokens, 20, 0, :text
91
-
102
+
92
103
  @search.search :text, 20, 0
93
104
  end
94
105
  it "uses the tokenizer" do
95
106
  @search.stub! :search_with
96
-
107
+
97
108
  @search.should_receive(:tokenized).once.with :text
98
-
109
+
99
110
  @search.search :text, 20 # (unimportant)
100
111
  end
101
112
  end
102
-
113
+
103
114
  describe 'initializer' do
104
115
  context 'with tokenizer' do
105
116
  before(:each) do
@@ -113,7 +124,7 @@ describe Picky::Search do
113
124
  end
114
125
  end
115
126
  end
116
-
127
+
117
128
  describe 'to_s' do
118
129
  before(:each) do
119
130
  @index.stub! :name => :some_index, :each_category => []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picky
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.7
4
+ version: 3.6.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-24 00:00:00.000000000 Z
12
+ date: 2011-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70345606045980 !ruby/object:Gem::Requirement
16
+ requirement: &70319172184220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,21 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70345606045980
24
+ version_requirements: *70319172184220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: picky-client
27
- requirement: &70345606045280 !ruby/object:Gem::Requirement
27
+ requirement: &70319172181920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 3.6.7
32
+ version: 3.6.8
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70345606045280
35
+ version_requirements: *70319172181920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack
38
- requirement: &70345606044720 !ruby/object:Gem::Requirement
38
+ requirement: &70319172180560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70345606044720
46
+ version_requirements: *70319172180560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rack_fast_escape
49
- requirement: &70345606044260 !ruby/object:Gem::Requirement
49
+ requirement: &70319172222400 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70345606044260
57
+ version_requirements: *70319172222400
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: text
60
- requirement: &70345606043840 !ruby/object:Gem::Requirement
60
+ requirement: &70319172220440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70345606043840
68
+ version_requirements: *70319172220440
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yajl-ruby
71
- requirement: &70345606043420 !ruby/object:Gem::Requirement
71
+ requirement: &70319172237300 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70345606043420
79
+ version_requirements: *70319172237300
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: activesupport
82
- requirement: &70345606042900 !ruby/object:Gem::Requirement
82
+ requirement: &70319172277680 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '3.0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70345606042900
90
+ version_requirements: *70319172277680
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: unicorn
93
- requirement: &70345606042440 !ruby/object:Gem::Requirement
93
+ requirement: &70319172274760 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70345606042440
101
+ version_requirements: *70319172274760
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: sinatra
104
- requirement: &70345606041980 !ruby/object:Gem::Requirement
104
+ requirement: &70319172284740 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70345606041980
112
+ version_requirements: *70319172284740
113
113
  description: Fast Ruby semantic text search engine with comfortable single field interface.
114
114
  email: florian.hanke+picky@gmail.com
115
115
  executables:
@@ -138,11 +138,15 @@ files:
138
138
  - lib/picky/backends/memory/text.rb
139
139
  - lib/picky/backends/memory.rb
140
140
  - lib/picky/backends/redis/basic.rb
141
+ - lib/picky/backends/redis/directly_manipulable.rb
141
142
  - lib/picky/backends/redis/float.rb
142
143
  - lib/picky/backends/redis/list.rb
143
144
  - lib/picky/backends/redis/string.rb
144
145
  - lib/picky/backends/redis.rb
145
- - lib/picky/backends/sqlite/db.rb
146
+ - lib/picky/backends/sqlite/array.rb
147
+ - lib/picky/backends/sqlite/basic.rb
148
+ - lib/picky/backends/sqlite/directly_manipulable.rb
149
+ - lib/picky/backends/sqlite/value.rb
146
150
  - lib/picky/backends/sqlite.rb
147
151
  - lib/picky/bundle.rb
148
152
  - lib/picky/bundle_indexed.rb
@@ -254,7 +258,18 @@ files:
254
258
  - lib/tasks/try.rake
255
259
  - lib/picky/ext/ruby19/performant.c
256
260
  - spec/aux/picky/cli_spec.rb
261
+ - spec/category_realtime_spec.rb
257
262
  - spec/ext/performant_spec.rb
263
+ - spec/functional/backends/file_spec.rb
264
+ - spec/functional/backends/memory_spec.rb
265
+ - spec/functional/backends/redis_spec.rb
266
+ - spec/functional/backends/sqlite_spec.rb
267
+ - spec/functional/dynamic_weights_spec.rb
268
+ - spec/functional/exact_first_spec.rb
269
+ - spec/functional/max_allocations_spec.rb
270
+ - spec/functional/realtime_spec.rb
271
+ - spec/functional/regression_spec.rb
272
+ - spec/functional/speed_spec.rb
258
273
  - spec/lib/adapters/rack/base_spec.rb
259
274
  - spec/lib/adapters/rack/live_parameters_spec.rb
260
275
  - spec/lib/adapters/rack/query_spec.rb
@@ -270,11 +285,14 @@ files:
270
285
  - spec/lib/backends/memory/text_spec.rb
271
286
  - spec/lib/backends/memory_spec.rb
272
287
  - spec/lib/backends/redis/basic_spec.rb
288
+ - spec/lib/backends/redis/directly_manipulable_spec.rb
273
289
  - spec/lib/backends/redis/float_spec.rb
274
290
  - spec/lib/backends/redis/list_spec.rb
275
291
  - spec/lib/backends/redis/string_spec.rb
276
292
  - spec/lib/backends/redis_spec.rb
277
- - spec/lib/backends/sqlite/db_spec.rb
293
+ - spec/lib/backends/sqlite/array_spec.rb
294
+ - spec/lib/backends/sqlite/directly_manipulable_spec.rb
295
+ - spec/lib/backends/sqlite/value_spec.rb
278
296
  - spec/lib/backends/sqlite_spec.rb
279
297
  - spec/lib/bundle_spec.rb
280
298
  - spec/lib/bundling_spec.rb
@@ -310,6 +328,7 @@ files:
310
328
  - spec/lib/helpers/measuring_spec.rb
311
329
  - spec/lib/index_indexed_spec.rb
312
330
  - spec/lib/index_indexing_spec.rb
331
+ - spec/lib/index_realtime_spec.rb
313
332
  - spec/lib/index_spec.rb
314
333
  - spec/lib/indexed/bundle_realtime_spec.rb
315
334
  - spec/lib/indexed/bundle_spec.rb
@@ -352,11 +371,6 @@ files:
352
371
  - spec/lib/statistics_spec.rb
353
372
  - spec/lib/tasks/try_spec.rb
354
373
  - spec/lib/tokenizer_spec.rb
355
- - spec/specific/dynamic_weights_spec.rb
356
- - spec/specific/exact_first_spec.rb
357
- - spec/specific/realtime_spec.rb
358
- - spec/specific/regression_spec.rb
359
- - spec/specific/speed_spec.rb
360
374
  - bin/picky
361
375
  homepage: http://florianhanke.com/picky
362
376
  licenses: []
@@ -384,7 +398,18 @@ specification_version: 3
384
398
  summary: ! 'Picky: Semantic Search Engine. Clever Interface. Good Tools.'
385
399
  test_files:
386
400
  - spec/aux/picky/cli_spec.rb
401
+ - spec/category_realtime_spec.rb
387
402
  - spec/ext/performant_spec.rb
403
+ - spec/functional/backends/file_spec.rb
404
+ - spec/functional/backends/memory_spec.rb
405
+ - spec/functional/backends/redis_spec.rb
406
+ - spec/functional/backends/sqlite_spec.rb
407
+ - spec/functional/dynamic_weights_spec.rb
408
+ - spec/functional/exact_first_spec.rb
409
+ - spec/functional/max_allocations_spec.rb
410
+ - spec/functional/realtime_spec.rb
411
+ - spec/functional/regression_spec.rb
412
+ - spec/functional/speed_spec.rb
388
413
  - spec/lib/adapters/rack/base_spec.rb
389
414
  - spec/lib/adapters/rack/live_parameters_spec.rb
390
415
  - spec/lib/adapters/rack/query_spec.rb
@@ -400,11 +425,14 @@ test_files:
400
425
  - spec/lib/backends/memory/text_spec.rb
401
426
  - spec/lib/backends/memory_spec.rb
402
427
  - spec/lib/backends/redis/basic_spec.rb
428
+ - spec/lib/backends/redis/directly_manipulable_spec.rb
403
429
  - spec/lib/backends/redis/float_spec.rb
404
430
  - spec/lib/backends/redis/list_spec.rb
405
431
  - spec/lib/backends/redis/string_spec.rb
406
432
  - spec/lib/backends/redis_spec.rb
407
- - spec/lib/backends/sqlite/db_spec.rb
433
+ - spec/lib/backends/sqlite/array_spec.rb
434
+ - spec/lib/backends/sqlite/directly_manipulable_spec.rb
435
+ - spec/lib/backends/sqlite/value_spec.rb
408
436
  - spec/lib/backends/sqlite_spec.rb
409
437
  - spec/lib/bundle_spec.rb
410
438
  - spec/lib/bundling_spec.rb
@@ -440,6 +468,7 @@ test_files:
440
468
  - spec/lib/helpers/measuring_spec.rb
441
469
  - spec/lib/index_indexed_spec.rb
442
470
  - spec/lib/index_indexing_spec.rb
471
+ - spec/lib/index_realtime_spec.rb
443
472
  - spec/lib/index_spec.rb
444
473
  - spec/lib/indexed/bundle_realtime_spec.rb
445
474
  - spec/lib/indexed/bundle_spec.rb
@@ -482,8 +511,3 @@ test_files:
482
511
  - spec/lib/statistics_spec.rb
483
512
  - spec/lib/tasks/try_spec.rb
484
513
  - spec/lib/tokenizer_spec.rb
485
- - spec/specific/dynamic_weights_spec.rb
486
- - spec/specific/exact_first_spec.rb
487
- - spec/specific/realtime_spec.rb
488
- - spec/specific/regression_spec.rb
489
- - spec/specific/speed_spec.rb