picky 0.0.9 → 0.1.0
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.
- data/lib/picky/application.rb +38 -37
- data/lib/picky/cacher/partial/default.rb +1 -3
- data/lib/picky/cacher/partial/subtoken.rb +44 -18
- data/lib/picky/configuration/field.rb +6 -2
- data/lib/picky/configuration/indexes.rb +16 -7
- data/lib/picky/configuration/queries.rb +3 -13
- data/lib/picky/extensions/symbol.rb +19 -4
- data/lib/picky/generator.rb +9 -0
- data/lib/picky/helpers/measuring.rb +3 -3
- data/lib/picky/index/bundle.rb +5 -4
- data/lib/picky/index/category.rb +14 -7
- data/lib/picky/index/combined.rb +6 -1
- data/lib/picky/indexers/no_source_specified_error.rb +2 -0
- data/lib/picky/indexes.rb +3 -9
- data/lib/picky/query/allocation.rb +1 -1
- data/lib/picky/query/allocations.rb +2 -2
- data/lib/picky/rack/harakiri.rb +10 -8
- data/lib/picky/routing.rb +19 -21
- data/lib/picky/solr/schema_generator.rb +4 -4
- data/lib/picky/sources/base.rb +16 -4
- data/lib/picky/sources/csv.rb +3 -0
- data/lib/picky/sources/db.rb +30 -22
- data/lib/picky/tokenizers/base.rb +7 -5
- data/lib/picky/tokenizers/index.rb +5 -5
- data/lib/picky/tokenizers/query.rb +9 -9
- data/prototype_project/app/application.rb +36 -29
- data/prototype_project/app/db.yml +1 -1
- data/prototype_project/config.ru +3 -2
- data/spec/ext/performant_spec.rb +2 -2
- data/spec/lib/application_spec.rb +54 -8
- data/spec/lib/cacher/partial/default_spec.rb +15 -0
- data/spec/lib/cacher/partial/subtoken_spec.rb +54 -2
- data/spec/lib/extensions/symbol_spec.rb +124 -30
- data/spec/lib/index/bundle_partial_generation_speed_spec.rb +1 -1
- data/spec/lib/query/allocations_spec.rb +5 -5
- data/spec/lib/query/combinations_spec.rb +3 -3
- data/spec/lib/rack/harakiri_spec.rb +29 -0
- data/spec/lib/routing_spec.rb +22 -98
- data/spec/lib/tokenizers/index_spec.rb +1 -1
- data/spec/specific/speed_spec.rb +4 -5
- metadata +7 -3
@@ -62,21 +62,21 @@ describe 'Query::Combinations' do
|
|
62
62
|
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
63
63
|
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
64
64
|
|
65
|
-
Benchmark.realtime { @combinations.ids }.should
|
65
|
+
Benchmark.realtime { @combinations.ids }.should < 0.004
|
66
66
|
end
|
67
67
|
it "should be fast" do
|
68
68
|
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
69
69
|
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
70
70
|
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
71
71
|
|
72
|
-
Benchmark.realtime { @combinations.ids }.should
|
72
|
+
Benchmark.realtime { @combinations.ids }.should < 0.00015
|
73
73
|
end
|
74
74
|
it "should be fast" do
|
75
75
|
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
76
76
|
@combination2.should_receive(:ids).once.with.and_return (901..1000).to_a
|
77
77
|
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
78
78
|
|
79
|
-
Benchmark.realtime { @combinations.ids }.should
|
79
|
+
Benchmark.realtime { @combinations.ids }.should < 0.0001
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Rack::Harakiri do
|
5
|
+
before(:each) do
|
6
|
+
@app = stub :app
|
7
|
+
end
|
8
|
+
context "defaults" do
|
9
|
+
before(:each) do
|
10
|
+
@harakiri = Rack::Harakiri.new @app
|
11
|
+
end
|
12
|
+
it "should quit after an amount of requests" do
|
13
|
+
@harakiri.quit_after_requests.should == 50
|
14
|
+
end
|
15
|
+
end
|
16
|
+
context "with harakiri set" do
|
17
|
+
before(:each) do
|
18
|
+
Rack::Harakiri.after = 100
|
19
|
+
@harakiri = Rack::Harakiri.new @app
|
20
|
+
end
|
21
|
+
after(:each) do
|
22
|
+
Rack::Harakiri.after = nil
|
23
|
+
end
|
24
|
+
it "should quit after an amount of requests" do
|
25
|
+
@harakiri.quit_after_requests.should == 100
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/spec/lib/routing_spec.rb
CHANGED
@@ -78,54 +78,6 @@ describe Routing do
|
|
78
78
|
@routing.routes.freeze
|
79
79
|
@routing.call(env).should == [333, {}, ['this is gurk']]
|
80
80
|
end
|
81
|
-
it 'should route correctly' do
|
82
|
-
env = rack_defaults_for '/searches/live.json?query=some_query'
|
83
|
-
|
84
|
-
live = stub :live
|
85
|
-
live.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Live.new)
|
86
|
-
Query::Live.stub! :new => live
|
87
|
-
|
88
|
-
@routing.live %r{/searches/live}, :some_index
|
89
|
-
|
90
|
-
@routing.routes.freeze
|
91
|
-
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"52"}, ["{\"allocations\":[],\"offset\":0,\"duration\":0,\"total\":0}"]]
|
92
|
-
end
|
93
|
-
it 'should route correctly' do
|
94
|
-
env = rack_defaults_for '/searches/live.json?query=some_query'
|
95
|
-
|
96
|
-
live = stub :live
|
97
|
-
live.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Live.new)
|
98
|
-
Query::Live.stub! :new => live
|
99
|
-
|
100
|
-
@routing.live '/searches/live', :some_index
|
101
|
-
|
102
|
-
@routing.routes.freeze
|
103
|
-
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"52"}, ["{\"allocations\":[],\"offset\":0,\"duration\":0,\"total\":0}"]]
|
104
|
-
end
|
105
|
-
it 'should route correctly' do
|
106
|
-
env = rack_defaults_for '/searches/full?query=some_query'
|
107
|
-
|
108
|
-
full = stub :full
|
109
|
-
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
110
|
-
Query::Full.stub! :new => full
|
111
|
-
|
112
|
-
@routing.full %r{/searches/full}, :some_index
|
113
|
-
|
114
|
-
@routing.routes.freeze
|
115
|
-
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"50"}, ["\x04\b{\t:\x10allocations[\x00:\voffseti\x00:\rdurationi\x00:\ntotali\x00"]]
|
116
|
-
end
|
117
|
-
it 'should route correctly' do
|
118
|
-
env = rack_defaults_for '/searches/full?query=some_query'
|
119
|
-
|
120
|
-
full = stub :full
|
121
|
-
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
122
|
-
Query::Full.stub! :new => full
|
123
|
-
|
124
|
-
@routing.full '/searches/full', :some_index
|
125
|
-
|
126
|
-
@routing.routes.freeze
|
127
|
-
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"50"}, ["\x04\b{\t:\x10allocations[\x00:\voffseti\x00:\rdurationi\x00:\ntotali\x00"]]
|
128
|
-
end
|
129
81
|
it 'should route correctly' do
|
130
82
|
env = rack_defaults_for '/searches/some_route?query=some_query'
|
131
83
|
|
@@ -133,7 +85,7 @@ describe Routing do
|
|
133
85
|
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
134
86
|
Query::Full.stub! :new => full
|
135
87
|
|
136
|
-
@routing.route '/searches/some_route'
|
88
|
+
@routing.route '/searches/some_route' => Query::Full.new(:some_index, :some_other_index)
|
137
89
|
|
138
90
|
@routing.routes.freeze
|
139
91
|
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"50"}, ["\x04\b{\t:\x10allocations[\x00:\voffseti\x00:\rdurationi\x00:\ntotali\x00"]]
|
@@ -145,7 +97,7 @@ describe Routing do
|
|
145
97
|
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
146
98
|
Query::Full.stub! :new => full
|
147
99
|
|
148
|
-
@routing.route '/searches/some_route'
|
100
|
+
@routing.route '/searches/some_route' => Query::Full.new(:some_index, :some_other_index), :query => { :type => :some_type }
|
149
101
|
|
150
102
|
@routing.routes.freeze
|
151
103
|
@routing.call(env).should == [200, {"Content-Type"=>"application/octet-stream", "Content-Length"=>"50"}, ["\x04\b{\t:\x10allocations[\x00:\voffseti\x00:\rdurationi\x00:\ntotali\x00"]]
|
@@ -157,7 +109,7 @@ describe Routing do
|
|
157
109
|
full.should_receive(:search_with_text).never
|
158
110
|
Query::Full.stub! :new => full
|
159
111
|
|
160
|
-
@routing.route '/searches/some_route'
|
112
|
+
@routing.route '/searches/some_route' => Query::Full.new(:some_index, :some_other_index)
|
161
113
|
|
162
114
|
@routing.routes.freeze
|
163
115
|
@routing.call(env).should == [404, {"Content-Type"=>"text/html", "X-Cascade"=>"pass"}, ["Not Found"]]
|
@@ -194,7 +146,22 @@ describe Routing do
|
|
194
146
|
end
|
195
147
|
end
|
196
148
|
|
197
|
-
describe
|
149
|
+
describe "route" do
|
150
|
+
it "should delegate correctly" do
|
151
|
+
@routing.should_receive(:route_one).once.with %r{regexp1}, :query1, {}
|
152
|
+
@routing.should_receive(:route_one).once.with %r{regexp2}, :query2, {}
|
153
|
+
|
154
|
+
@routing.route %r{regexp1} => :query1, %r{regexp2} => :query2
|
155
|
+
end
|
156
|
+
it "should split options correctly" do
|
157
|
+
@routing.should_receive(:route_one).once.with %r{regexp1}, :query1, :some => :option
|
158
|
+
@routing.should_receive(:route_one).once.with %r{regexp2}, :query2, :some => :option
|
159
|
+
|
160
|
+
@routing.route %r{regexp1} => :query1, %r{regexp2} => :query2, :some => :option
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe 'route_one' do
|
198
165
|
before(:each) do
|
199
166
|
@some_query_app = stub :some_query_app
|
200
167
|
@routing.stub! :generate_app => @some_query_app
|
@@ -202,17 +169,17 @@ describe Routing do
|
|
202
169
|
it 'should add the right route' do
|
203
170
|
@routes.should_receive(:add_route).once.with @some_query_app, { :request_method => "GET", :path_info => /some_url/ }
|
204
171
|
|
205
|
-
@routing.
|
172
|
+
@routing.route_one %r{some_url}, :some_query, {}
|
206
173
|
end
|
207
174
|
it 'should add the right route' do
|
208
175
|
@routes.should_receive(:add_route).once.with @some_query_app, { :request_method => "GET", :path_info => /some_url/ }
|
209
176
|
|
210
|
-
@routing.
|
177
|
+
@routing.route_one 'some_url', :some_query, {}
|
211
178
|
end
|
212
179
|
it 'should add the right route' do
|
213
180
|
@routes.should_receive(:add_route).once.with @some_query_app, { :request_method => "GET", :glarf => :blarf, :path_info => /some_url/ }
|
214
181
|
|
215
|
-
@routing.
|
182
|
+
@routing.route_one 'some_url', :some_query, { :glarf => :blarf }
|
216
183
|
end
|
217
184
|
end
|
218
185
|
|
@@ -232,49 +199,6 @@ describe Routing do
|
|
232
199
|
end
|
233
200
|
end
|
234
201
|
|
235
|
-
#
|
236
|
-
describe 'live' do
|
237
|
-
describe 'instance creation' do
|
238
|
-
before(:each) do
|
239
|
-
@routing.stub :route
|
240
|
-
end
|
241
|
-
context 'with options' do
|
242
|
-
it 'should call route correctly' do
|
243
|
-
Query::Live.should_receive(:new).once.with :some_index, :some_other_index
|
244
|
-
|
245
|
-
@routing.live :url, :some_index, :some_other_index, { :query => { :param => :value } }
|
246
|
-
end
|
247
|
-
end
|
248
|
-
context 'without options' do
|
249
|
-
it 'should call route correctly' do
|
250
|
-
Query::Live.should_receive(:new).once.with :some_index, :some_other_index
|
251
|
-
|
252
|
-
@routing.live :url, :some_index, :some_other_index
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
describe 'delegation' do
|
257
|
-
context 'with options' do
|
258
|
-
it 'should call route correctly' do
|
259
|
-
Query::Live.stub! :new => :live
|
260
|
-
|
261
|
-
@routing.should_receive(:route).once.with :url, :live, { :query => { :param => :value } }
|
262
|
-
|
263
|
-
@routing.live :url, :some_index, { :query => { :param => :value } }
|
264
|
-
end
|
265
|
-
end
|
266
|
-
context 'without options' do
|
267
|
-
it 'should call route correctly' do
|
268
|
-
Query::Live.stub! :new => :live
|
269
|
-
|
270
|
-
@routing.should_receive(:route).once.with :url, :live, {}
|
271
|
-
|
272
|
-
@routing.live :url, :some_index
|
273
|
-
end
|
274
|
-
end
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
202
|
describe 'answer' do
|
279
203
|
context 'with app' do
|
280
204
|
before(:each) do
|
@@ -8,7 +8,7 @@ describe Tokenizers::Index do
|
|
8
8
|
@tokenizer = Tokenizers::Index.new
|
9
9
|
end
|
10
10
|
|
11
|
-
describe "
|
11
|
+
describe "remove_removes_characters" do
|
12
12
|
it "should not remove ' from a query by default" do
|
13
13
|
@tokenizer.remove_illegals("Lugi's").should == "Lugi's"
|
14
14
|
end
|
data/spec/specific/speed_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
|
3
3
|
describe "Speccing Ruby for speed" do
|
4
|
-
|
5
4
|
describe "various versions for allocation id concatenating" do
|
6
5
|
before(:each) do
|
7
6
|
@allocs = [:hello, :speed, :test]
|
@@ -22,14 +21,14 @@ describe "Speccing Ruby for speed" do
|
|
22
21
|
@allocs.inject([]) do |total, alloc|
|
23
22
|
total + @ids[alloc]
|
24
23
|
end
|
25
|
-
end.should
|
24
|
+
end.should < 0.0025
|
26
25
|
end
|
27
26
|
end
|
28
27
|
describe "map and flatten!(1)" do
|
29
28
|
it "should be fast" do
|
30
29
|
Benchmark.realtime do
|
31
30
|
@allocs.map { |alloc| @ids[alloc] }.flatten!(1)
|
32
|
-
end.should
|
31
|
+
end.should < 0.02
|
33
32
|
end
|
34
33
|
end
|
35
34
|
describe "<< and flatten!(1)" do
|
@@ -38,7 +37,7 @@ describe "Speccing Ruby for speed" do
|
|
38
37
|
@allocs.inject([]) do |total, alloc|
|
39
38
|
total << @ids[alloc]
|
40
39
|
end.flatten!(1)
|
41
|
-
end.should
|
40
|
+
end.should < 0.02
|
42
41
|
end
|
43
42
|
end
|
44
43
|
describe "<< and flatten!" do
|
@@ -47,7 +46,7 @@ describe "Speccing Ruby for speed" do
|
|
47
46
|
@allocs.inject([]) do |total, alloc|
|
48
47
|
total << @ids[alloc]
|
49
48
|
end.flatten!
|
50
|
-
end.should
|
49
|
+
end.should < 0.02
|
51
50
|
end
|
52
51
|
end
|
53
52
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.9
|
9
|
+
version: 0.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Florian Hanke
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-12 00:00:00 +02:00
|
18
18
|
default_executable: picky
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- prototype_project/unicorn.ru
|
144
144
|
- spec/ext/performant_spec.rb
|
145
145
|
- spec/lib/application_spec.rb
|
146
|
+
- spec/lib/cacher/partial/default_spec.rb
|
146
147
|
- spec/lib/cacher/partial/subtoken_spec.rb
|
147
148
|
- spec/lib/cacher/partial_generator_spec.rb
|
148
149
|
- spec/lib/cacher/similarity/double_levenshtone_spec.rb
|
@@ -180,6 +181,7 @@ files:
|
|
180
181
|
- spec/lib/query/token_spec.rb
|
181
182
|
- spec/lib/query/tokens_spec.rb
|
182
183
|
- spec/lib/query/weights_spec.rb
|
184
|
+
- spec/lib/rack/harakiri_spec.rb
|
183
185
|
- spec/lib/results/base_spec.rb
|
184
186
|
- spec/lib/routing_spec.rb
|
185
187
|
- spec/lib/solr/schema_generator_spec.rb
|
@@ -226,6 +228,7 @@ summary: Picky the Search Engine
|
|
226
228
|
test_files:
|
227
229
|
- spec/ext/performant_spec.rb
|
228
230
|
- spec/lib/application_spec.rb
|
231
|
+
- spec/lib/cacher/partial/default_spec.rb
|
229
232
|
- spec/lib/cacher/partial/subtoken_spec.rb
|
230
233
|
- spec/lib/cacher/partial_generator_spec.rb
|
231
234
|
- spec/lib/cacher/similarity/double_levenshtone_spec.rb
|
@@ -263,6 +266,7 @@ test_files:
|
|
263
266
|
- spec/lib/query/token_spec.rb
|
264
267
|
- spec/lib/query/tokens_spec.rb
|
265
268
|
- spec/lib/query/weights_spec.rb
|
269
|
+
- spec/lib/rack/harakiri_spec.rb
|
266
270
|
- spec/lib/results/base_spec.rb
|
267
271
|
- spec/lib/routing_spec.rb
|
268
272
|
- spec/lib/solr/schema_generator_spec.rb
|