picky 3.6.7 → 3.6.8

Sign up to get free protection for your applications and to get access to all the features.
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