picky 3.0.0.pre1 → 3.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/picky/adapters/rack/search.rb +3 -3
- data/lib/picky/adapters/rack.rb +3 -3
- data/lib/picky/application.rb +5 -3
- data/lib/picky/backend/file/json.rb +7 -0
- data/lib/picky/backend/file/text.rb +2 -2
- data/lib/picky/character_substituters/west_european.rb +3 -0
- data/lib/picky/extensions/symbol.rb +4 -4
- data/lib/picky/indexes/index.rb +11 -85
- data/lib/picky/indexes/index_indexed.rb +13 -2
- data/lib/picky/indexes/index_indexing.rb +38 -11
- data/lib/picky/loader.rb +0 -4
- data/lib/picky/search.rb +71 -78
- data/lib/picky/tokenizers/base.rb +4 -2
- data/lib/picky.rb +6 -0
- data/spec/lib/application_spec.rb +31 -11
- data/spec/lib/backend/files_spec.rb +1 -1
- data/spec/lib/categories_indexed_spec.rb +2 -2
- data/spec/lib/category_indexed_spec.rb +7 -2
- data/spec/lib/category_indexing_spec.rb +1 -1
- data/spec/lib/category_spec.rb +1 -1
- data/spec/lib/frontend_adapters/rack_spec.rb +4 -4
- data/spec/lib/indexed/bundle/memory_spec.rb +2 -2
- data/spec/lib/indexed/bundle/redis_spec.rb +1 -1
- data/spec/lib/indexed/wrappers/exact_first_spec.rb +2 -2
- data/spec/lib/indexes/index_indexed_spec.rb +25 -3
- data/spec/lib/indexes/index_indexing_spec.rb +58 -10
- data/spec/lib/indexes/index_spec.rb +13 -7
- data/spec/lib/indexes/redis_spec.rb +1 -1
- data/spec/lib/indexing/bundle/memory_partial_generation_speed_spec.rb +1 -1
- data/spec/lib/indexing/bundle/memory_spec.rb +1 -1
- data/spec/lib/indexing/bundle/redis_spec.rb +1 -1
- data/spec/lib/search_spec.rb +18 -18
- data/spec/lib/tokenizers/base_spec.rb +3 -3
- metadata +3 -6
- data/lib/picky/loggers/search.rb +0 -26
- data/spec/lib/loggers/search_spec.rb +0 -19
@@ -8,11 +8,12 @@ describe Picky::Application do
|
|
8
8
|
it "should run ok" do
|
9
9
|
lambda {
|
10
10
|
class MinimalTestApplication < described_class
|
11
|
-
books = Picky::Indexes::Memory.new :books
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
books = Picky::Indexes::Memory.new :books do
|
12
|
+
source Picky::Sources::DB.new(
|
13
|
+
'SELECT id, title FROM books',
|
14
|
+
:file => 'app/db.yml'
|
15
|
+
)
|
16
|
+
end
|
16
17
|
books.define_category :title
|
17
18
|
|
18
19
|
rack_adapter.stub! :exclaim # Stopping it from exclaiming.
|
@@ -43,11 +44,13 @@ describe Picky::Application do
|
|
43
44
|
substitutes_characters_with: Picky::CharacterSubstituters::WestEuropean.new,
|
44
45
|
maximum_tokens: 5
|
45
46
|
|
46
|
-
books_index = Picky::Indexes::Memory.new :books
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
books_index = Picky::Indexes::Memory.new :books do
|
48
|
+
source Picky::Sources::DB.new(
|
49
|
+
'SELECT id, title, author, isbn13 as isbn FROM books',
|
50
|
+
:file => 'app/db.yml'
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
51
54
|
books_index.define_category :title,
|
52
55
|
similarity: Picky::Similarity::DoubleMetaphone.new(3) # Up to three similar title word indexed.
|
53
56
|
books_index.define_category :author,
|
@@ -67,9 +70,11 @@ describe Picky::Application do
|
|
67
70
|
rack_adapter.stub! :exclaim # Stopping it from exclaiming.
|
68
71
|
|
69
72
|
route %r{^/books} => Picky::Search.new(books_index)
|
70
|
-
|
73
|
+
|
74
|
+
buks_search = Picky::Search.new(books_index) do
|
71
75
|
searching removes_characters: /[buks]/
|
72
76
|
end
|
77
|
+
route %r{^/buks} => buks_search
|
73
78
|
end
|
74
79
|
}.should_not raise_error
|
75
80
|
end
|
@@ -119,6 +124,21 @@ describe Picky::Application do
|
|
119
124
|
end
|
120
125
|
end
|
121
126
|
|
127
|
+
describe 'route' do
|
128
|
+
it 'is delegated' do
|
129
|
+
described_class.rack_adapter.should_receive(:route).once.with :some_options
|
130
|
+
|
131
|
+
described_class.route(:some_options)
|
132
|
+
end
|
133
|
+
it 'raises on block' do
|
134
|
+
expect {
|
135
|
+
described_class.route :quack => Hash.new do # Anything with a block.
|
136
|
+
# do something
|
137
|
+
end
|
138
|
+
}.to raise_error("Warning: block passed into #route method, not into Search.new!")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
122
142
|
describe 'call' do
|
123
143
|
before(:each) do
|
124
144
|
@routes = stub :routes
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Backend::Files do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
index = Picky::Indexes::Memory.new :some_index
|
6
|
+
index = Picky::Indexes::Memory.new :some_index
|
7
7
|
category = Picky::Category.new :some_category, index
|
8
8
|
bundle = Picky::Indexing::Bundle::Base.new :some_bundle, category, nil, nil, nil
|
9
9
|
|
@@ -22,7 +22,7 @@ describe Picky::Categories do
|
|
22
22
|
|
23
23
|
context "with real categories" do
|
24
24
|
before(:each) do
|
25
|
-
@index1 = Picky::Indexes::Memory.new :name
|
25
|
+
@index1 = Picky::Indexes::Memory.new :name
|
26
26
|
|
27
27
|
@categories = described_class.new
|
28
28
|
@categories << Picky::Category.new(:category1, @index1)
|
@@ -65,7 +65,7 @@ describe Picky::Categories do
|
|
65
65
|
|
66
66
|
context 'without options' do
|
67
67
|
before(:each) do
|
68
|
-
@index1 = Picky::Indexes::Memory.new :some_index
|
68
|
+
@index1 = Picky::Indexes::Memory.new :some_index
|
69
69
|
|
70
70
|
@category1 = Picky::Category.new :category1, @index1
|
71
71
|
@category2 = Picky::Category.new :category2, @index1
|
@@ -3,7 +3,9 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Category do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index
|
6
|
+
@index = Picky::Indexes::Index.new :some_index do
|
7
|
+
source []
|
8
|
+
end
|
7
9
|
@partial_strategy = stub :partial, :use_exact_for_partial? => false
|
8
10
|
@weights_strategy = stub :weights
|
9
11
|
@similarity_strategy = stub :similarity
|
@@ -40,7 +42,10 @@ describe Picky::Category do
|
|
40
42
|
end
|
41
43
|
context 'indexed_bundle_class defined differently' do
|
42
44
|
before(:each) do
|
43
|
-
|
45
|
+
index = Picky::Indexes::Redis.new(:some_index_name) do
|
46
|
+
source []
|
47
|
+
end
|
48
|
+
@category = described_class.new :some_name, index
|
44
49
|
end
|
45
50
|
context 'with a partial strategy that uses the exact index' do
|
46
51
|
before(:each) do
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Category do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index = Picky::Indexes::Memory.new :some_index
|
6
|
+
@index = Picky::Indexes::Memory.new :some_index
|
7
7
|
@source = stub :some_given_source, :key_format => nil
|
8
8
|
end
|
9
9
|
let(:category) { described_class.new(:some_category, @index, :source => @source).tap { |c| c.stub! :timed_exclaim } }
|
data/spec/lib/category_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Picky::Category do
|
4
4
|
|
5
|
-
let(:index) { Picky::Indexes::Memory.new :some_index
|
5
|
+
let(:index) { Picky::Indexes::Memory.new :some_index }
|
6
6
|
let(:category) { described_class.new :some_category, index }
|
7
7
|
|
8
8
|
it 'should set defaults correctly' do
|
@@ -63,7 +63,7 @@ describe Picky::FrontendAdapters::Rack do
|
|
63
63
|
context 'real routes' do
|
64
64
|
before(:each) do
|
65
65
|
@rack_adapter.reset_routes
|
66
|
-
|
66
|
+
Picky.logger.stub! :log
|
67
67
|
end
|
68
68
|
it 'should route correctly' do
|
69
69
|
env = {}
|
@@ -107,7 +107,7 @@ describe Picky::FrontendAdapters::Rack do
|
|
107
107
|
env = rack_defaults_for '/searches/some_route?query=some_query'
|
108
108
|
|
109
109
|
search = stub :search
|
110
|
-
search.should_receive(:
|
110
|
+
search.should_receive(:search).once.with(anything, 20, 0).and_return(Picky::Results.new)
|
111
111
|
Picky::Search.stub! :new => search
|
112
112
|
|
113
113
|
@rack_adapter.route '/searches/some_route' => Picky::Search.new(:some_index, :some_other_index)
|
@@ -119,7 +119,7 @@ describe Picky::FrontendAdapters::Rack do
|
|
119
119
|
env = rack_defaults_for '/searches/some_route?query=some_query&type=some_type'
|
120
120
|
|
121
121
|
search = stub :search
|
122
|
-
search.should_receive(:
|
122
|
+
search.should_receive(:search).once.with(anything, 20, 0).and_return(Picky::Results.new)
|
123
123
|
Picky::Search.stub! :new => search
|
124
124
|
|
125
125
|
@rack_adapter.route '/searches/some_route' => Picky::Search.new(:some_index, :some_other_index), :query => { :type => :some_type }
|
@@ -131,7 +131,7 @@ describe Picky::FrontendAdapters::Rack do
|
|
131
131
|
env = rack_defaults_for '/searches/some_wrong_route?query=some_query'
|
132
132
|
|
133
133
|
search = stub :search
|
134
|
-
search.should_receive(:
|
134
|
+
search.should_receive(:search).never
|
135
135
|
Picky::Search.stub! :new => search
|
136
136
|
|
137
137
|
@rack_adapter.route '/searches/some_route' => Picky::Search.new(:some_index, :some_other_index)
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Indexed::Bundle::Memory do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index = Picky::Indexes::Memory.new :some_index
|
6
|
+
@index = Picky::Indexes::Memory.new :some_index
|
7
7
|
@category = Picky::Category.new :some_category, @index
|
8
8
|
|
9
9
|
@similarity = stub :similarity
|
@@ -153,7 +153,7 @@ describe Picky::Indexed::Bundle::Memory do
|
|
153
153
|
|
154
154
|
describe 'initialization' do
|
155
155
|
before(:each) do
|
156
|
-
@index = Picky::Indexes::Memory.new :some_index
|
156
|
+
@index = Picky::Indexes::Memory.new :some_index
|
157
157
|
@category = Picky::Category.new :some_category, @index
|
158
158
|
|
159
159
|
@bundle = described_class.new :some_name, @category, :similarity
|
@@ -7,7 +7,7 @@ describe Picky::Indexed::Bundle::Redis do
|
|
7
7
|
|
8
8
|
Picky::Backend::Redis.stub! :new => @backend
|
9
9
|
|
10
|
-
@index = Picky::Indexes::Memory.new :some_index
|
10
|
+
@index = Picky::Indexes::Memory.new :some_index
|
11
11
|
@category = Picky::Category.new :some_category, @index
|
12
12
|
|
13
13
|
@similarity = stub :similarity
|
@@ -13,7 +13,7 @@ describe Picky::Indexed::Wrappers::ExactFirst do
|
|
13
13
|
describe "self.wrap" do
|
14
14
|
context "index" do
|
15
15
|
it "wraps each category" do
|
16
|
-
index = Picky::Indexes::Memory.new :some_index
|
16
|
+
index = Picky::Indexes::Memory.new :some_index
|
17
17
|
index.define_category :some_category
|
18
18
|
|
19
19
|
Picky::Indexed::Wrappers::ExactFirst.wrap index
|
@@ -23,7 +23,7 @@ describe Picky::Indexed::Wrappers::ExactFirst do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
it "returns the index" do
|
26
|
-
index = Picky::Indexes::Memory.new :some_index
|
26
|
+
index = Picky::Indexes::Memory.new :some_index
|
27
27
|
index.define_category :some_category
|
28
28
|
|
29
29
|
described_class.wrap(index).should == index
|
@@ -4,7 +4,7 @@ describe Picky::Indexes::Index do
|
|
4
4
|
|
5
5
|
context 'without stubbed categories' do
|
6
6
|
before(:each) do
|
7
|
-
@index = described_class.new :some_index_name
|
7
|
+
@index = described_class.new :some_index_name
|
8
8
|
end
|
9
9
|
|
10
10
|
describe 'define_category' do
|
@@ -23,7 +23,7 @@ describe Picky::Indexes::Index do
|
|
23
23
|
before(:each) do
|
24
24
|
@categories = stub :categories
|
25
25
|
|
26
|
-
@index = described_class.new :some_name
|
26
|
+
@index = described_class.new :some_name
|
27
27
|
@index.define_category :some_category_name1
|
28
28
|
@index.define_category :some_category_name2
|
29
29
|
|
@@ -46,9 +46,31 @@ describe Picky::Indexes::Index do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
context 'result_identifier' do
|
50
|
+
context 'with it set' do
|
51
|
+
let(:index) do
|
52
|
+
described_class.new :some_name do
|
53
|
+
result_identifier :some_identifier
|
54
|
+
end
|
55
|
+
end
|
56
|
+
it 'has an after_indexing set' do
|
57
|
+
index.result_identifier.should == :some_identifier
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context 'with it not set' do
|
61
|
+
let(:index) do
|
62
|
+
described_class.new :some_name do
|
63
|
+
end
|
64
|
+
end
|
65
|
+
it 'returns the name' do
|
66
|
+
index.result_identifier.should == :some_name
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
49
71
|
context "no categories" do
|
50
72
|
it "works" do
|
51
|
-
described_class.new :some_name
|
73
|
+
described_class.new :some_name
|
52
74
|
end
|
53
75
|
end
|
54
76
|
|
@@ -4,14 +4,25 @@ describe Picky::Indexes::Index do
|
|
4
4
|
|
5
5
|
describe 'tokenizer' do
|
6
6
|
context 'with tokenizer' do
|
7
|
-
let(:
|
7
|
+
let(:tokenizer) { stub :tokenizer, :tokenize => '' }
|
8
|
+
let(:index) do
|
9
|
+
the_tokenizer = tokenizer
|
10
|
+
described_class.new :some_name do
|
11
|
+
source []
|
12
|
+
indexing the_tokenizer
|
13
|
+
end
|
14
|
+
end
|
8
15
|
|
9
16
|
it 'does things in order' do
|
10
|
-
index.tokenizer.should ==
|
17
|
+
index.tokenizer.should == tokenizer
|
11
18
|
end
|
12
19
|
end
|
13
20
|
context 'without tokenizer' do
|
14
|
-
let(:index)
|
21
|
+
let(:index) do
|
22
|
+
described_class.new :some_name do
|
23
|
+
source []
|
24
|
+
end
|
25
|
+
end
|
15
26
|
|
16
27
|
it 'does things in order' do
|
17
28
|
index.tokenizer.should == Picky::Indexes.tokenizer
|
@@ -19,9 +30,35 @@ describe Picky::Indexes::Index do
|
|
19
30
|
end
|
20
31
|
end
|
21
32
|
|
33
|
+
context 'after_indexing' do
|
34
|
+
context 'with it set' do
|
35
|
+
let(:index) do
|
36
|
+
described_class.new :some_name do
|
37
|
+
after_indexing "some after indexing going on"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
it 'has an after_indexing set' do
|
41
|
+
index.after_indexing.should == "some after indexing going on"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
context 'with it not set' do
|
45
|
+
let(:index) do
|
46
|
+
described_class.new :some_name do
|
47
|
+
end
|
48
|
+
end
|
49
|
+
it 'does not have an after_indexing set' do
|
50
|
+
index.after_indexing.should == nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
22
55
|
context 'in general' do
|
23
56
|
context 'with #each source' do
|
24
|
-
let(:index)
|
57
|
+
let(:index) do
|
58
|
+
described_class.new :some_name do
|
59
|
+
source []
|
60
|
+
end
|
61
|
+
end
|
25
62
|
|
26
63
|
it 'does things in order' do
|
27
64
|
index.should_receive(:check_source_empty).once.with.ordered
|
@@ -32,7 +69,12 @@ describe Picky::Indexes::Index do
|
|
32
69
|
end
|
33
70
|
context 'with non#each source' do
|
34
71
|
let(:source) { stub :source, :harvest => nil }
|
35
|
-
let(:index)
|
72
|
+
let(:index) do
|
73
|
+
the_source = source
|
74
|
+
described_class.new :some_name do
|
75
|
+
source the_source
|
76
|
+
end
|
77
|
+
end
|
36
78
|
|
37
79
|
it 'does things in order' do
|
38
80
|
category = stub :category
|
@@ -51,9 +93,11 @@ describe Picky::Indexes::Index do
|
|
51
93
|
|
52
94
|
context "with categories" do
|
53
95
|
before(:each) do
|
54
|
-
|
96
|
+
the_source = []
|
55
97
|
|
56
|
-
@index = described_class.new :some_name
|
98
|
+
@index = described_class.new :some_name do
|
99
|
+
source the_source
|
100
|
+
end
|
57
101
|
@index.define_category :some_category_name1
|
58
102
|
@index.define_category :some_category_name2
|
59
103
|
end
|
@@ -64,9 +108,11 @@ describe Picky::Indexes::Index do
|
|
64
108
|
end
|
65
109
|
describe 'define_source' do
|
66
110
|
it 'can be set with this method' do
|
67
|
-
|
111
|
+
source = stub :source, :each => [].each
|
112
|
+
|
113
|
+
@index.define_source source
|
68
114
|
|
69
|
-
@index.source.should ==
|
115
|
+
@index.source.should == source
|
70
116
|
end
|
71
117
|
end
|
72
118
|
describe 'find' do
|
@@ -95,7 +141,9 @@ describe Picky::Indexes::Index do
|
|
95
141
|
|
96
142
|
context "no categories" do
|
97
143
|
it "works" do
|
98
|
-
described_class.new :some_name
|
144
|
+
described_class.new :some_name do
|
145
|
+
source []
|
146
|
+
end
|
99
147
|
end
|
100
148
|
end
|
101
149
|
|
@@ -8,31 +8,37 @@ describe Picky::Indexes::Index do
|
|
8
8
|
|
9
9
|
context 'initializer' do
|
10
10
|
it 'works' do
|
11
|
-
|
11
|
+
the_source = some_source
|
12
|
+
expect { described_class.new :some_index_name do source the_source end }.to_not raise_error
|
12
13
|
end
|
13
14
|
it 'fails correctly' do
|
14
15
|
expect { described_class.new 0, some_source }.to raise_error
|
15
16
|
end
|
16
|
-
it 'fails correctly' do
|
17
|
-
expect { described_class.new :some_index_name, source: :some_source }.to raise_error
|
18
|
-
end
|
19
17
|
it 'fails correctly' do
|
20
18
|
expect { described_class.new :some_index_name, some_source }.to raise_error
|
21
19
|
end
|
22
20
|
it 'does not fail' do
|
23
|
-
expect { described_class.new :some_index_name
|
21
|
+
expect { described_class.new :some_index_name do source [] end }.to_not raise_error
|
24
22
|
end
|
25
23
|
it 'registers with the indexes' do
|
26
24
|
@api = described_class.allocate
|
27
25
|
|
28
26
|
Picky::Indexes.should_receive(:register).once.with @api
|
29
27
|
|
30
|
-
|
28
|
+
the_source = some_source
|
29
|
+
@api.send :initialize, :some_index_name do
|
30
|
+
source the_source
|
31
|
+
end
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
35
|
context 'unit' do
|
35
|
-
let(:api)
|
36
|
+
let(:api) do
|
37
|
+
the_source = some_source
|
38
|
+
described_class.new :some_index_name do
|
39
|
+
source the_source
|
40
|
+
end
|
41
|
+
end
|
36
42
|
|
37
43
|
describe 'geo_categories' do
|
38
44
|
it 'delegates correctly' do
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Indexing::Bundle::Memory do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index = Picky::Indexes::Memory.new :some_index
|
6
|
+
@index = Picky::Indexes::Memory.new :some_index
|
7
7
|
@category = Picky::Category.new :some_category, @index
|
8
8
|
|
9
9
|
@partial_strategy = Picky::Generators::Partial::Substring.new :from => 1
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Indexing::Bundle::Memory do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index = Picky::Indexes::Memory.new :some_index
|
6
|
+
@index = Picky::Indexes::Memory.new :some_index
|
7
7
|
@category = Picky::Category.new :some_category, @index
|
8
8
|
|
9
9
|
@partial = stub :partial
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Picky::Indexing::Bundle::Redis do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@index = Picky::Indexes::Memory.new :some_index
|
6
|
+
@index = Picky::Indexes::Memory.new :some_index
|
7
7
|
@category = Picky::Category.new :some_category, @index
|
8
8
|
|
9
9
|
@partial = stub :partial
|
data/spec/lib/search_spec.rb
CHANGED
@@ -42,12 +42,6 @@ describe Picky::Search do
|
|
42
42
|
end
|
43
43
|
context 'tokenizer predefined' do
|
44
44
|
let(:predefined) { stub(:tokenizer, :tokenize => nil) }
|
45
|
-
context 'by way of hash' do
|
46
|
-
let(:search) { described_class.new(tokenizer: predefined) }
|
47
|
-
it 'returns the predefined tokenizer' do
|
48
|
-
search.tokenizer.should == predefined
|
49
|
-
end
|
50
|
-
end
|
51
45
|
context 'by way of DSL' do
|
52
46
|
let(:search) { pre = predefined; described_class.new { searching pre } }
|
53
47
|
it 'returns the predefined tokenizer' do
|
@@ -62,7 +56,11 @@ describe Picky::Search do
|
|
62
56
|
let(:search) { described_class.new }
|
63
57
|
it 'returns a specific Combination for a specific input' do
|
64
58
|
some_source = stub(:source, :harvest => nil)
|
65
|
-
search.combinations_type_for([
|
59
|
+
search.combinations_type_for([
|
60
|
+
Picky::Indexes::Memory.new(:gu) do
|
61
|
+
source some_source
|
62
|
+
end]
|
63
|
+
).should == Picky::Query::Combinations::Memory
|
66
64
|
end
|
67
65
|
it 'just works on the same types' do
|
68
66
|
search.combinations_type_for([:blorf, :blarf]).should == Picky::Query::Combinations::Memory
|
@@ -89,42 +87,44 @@ describe Picky::Search do
|
|
89
87
|
search.weights.should be_kind_of(Picky::Query::Weights)
|
90
88
|
end
|
91
89
|
it "handles :weights options when not yet wrapped" do
|
92
|
-
search = described_class.new
|
90
|
+
search = described_class.new do boost [:a, :b] => +3 end
|
93
91
|
|
94
92
|
search.weights.should be_kind_of(Picky::Query::Weights)
|
95
93
|
end
|
96
94
|
it "handles :weights options when already wrapped" do
|
97
|
-
search = described_class.new
|
95
|
+
search = described_class.new do boost Picky::Query::Weights.new([:a, :b] => +3) end
|
98
96
|
|
99
97
|
search.weights.should be_kind_of(Picky::Query::Weights)
|
100
98
|
end
|
101
99
|
end
|
102
100
|
|
103
|
-
describe "
|
101
|
+
describe "search" do
|
104
102
|
before(:each) do
|
105
103
|
@search = described_class.new
|
106
104
|
end
|
107
|
-
it "delegates to
|
105
|
+
it "delegates to search_with" do
|
108
106
|
@search.stub! :tokenized => :tokens
|
109
107
|
|
110
|
-
@search.should_receive(:
|
108
|
+
@search.should_receive(:search_with).once.with :tokens, 20, 0
|
111
109
|
|
112
|
-
@search.
|
110
|
+
@search.search :text, 20, 0
|
113
111
|
end
|
114
112
|
it "uses the tokenizer" do
|
115
|
-
@search.stub! :
|
113
|
+
@search.stub! :search_with
|
116
114
|
|
117
115
|
@search.should_receive(:tokenized).once.with :text
|
118
116
|
|
119
|
-
@search.
|
117
|
+
@search.search :text, 20 # (unimportant)
|
120
118
|
end
|
121
119
|
end
|
122
120
|
|
123
121
|
describe 'initializer' do
|
124
122
|
context 'with tokenizer' do
|
125
123
|
before(:each) do
|
126
|
-
|
127
|
-
@search
|
124
|
+
tokenizer = stub :tokenizer, :tokenize => :some_tokenized_text
|
125
|
+
@search = described_class.new @index do
|
126
|
+
searching tokenizer
|
127
|
+
end
|
128
128
|
end
|
129
129
|
it 'should tokenize using the tokenizer' do
|
130
130
|
@search.tokenized('some text').should == :some_tokenized_text
|
@@ -138,7 +138,7 @@ describe Picky::Search do
|
|
138
138
|
end
|
139
139
|
context 'with weights' do
|
140
140
|
before(:each) do
|
141
|
-
@search = described_class.new @index
|
141
|
+
@search = described_class.new @index do boost :some_weights end
|
142
142
|
end
|
143
143
|
it 'works correctly' do
|
144
144
|
@search.to_s.should == 'Picky::Search(some_index, weights: some_weights)'
|
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe Picky::Tokenizers::Base do
|
6
6
|
|
7
7
|
context 'with special instance' do
|
8
|
-
let (:tokenizer) { described_class.new
|
8
|
+
let (:tokenizer) { described_class.new rejects_token_if: lambda { |token| token.to_s.length < 2 || token == :hello }, case_sensitive: true }
|
9
9
|
it 'rejects tokens with length < 2' do
|
10
10
|
tokenizer.reject([:'', :a, :ab, :abc]).should == [:ab, :abc]
|
11
11
|
end
|
@@ -46,12 +46,12 @@ EXPECTED
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
describe '
|
49
|
+
describe 'rejects_token_if' do
|
50
50
|
it 'rejects empty tokens by default' do
|
51
51
|
tokenizer.reject(['a', nil, '', 'b']).should == ['a', 'b']
|
52
52
|
end
|
53
53
|
it 'rejects tokens based on the given rejection criteria if set' do
|
54
|
-
tokenizer.
|
54
|
+
tokenizer.rejects_token_if &:nil?
|
55
55
|
|
56
56
|
tokenizer.reject(['a', nil, '', 'b']).should == ['a', '', 'b']
|
57
57
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: picky
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 3.0.0.
|
5
|
+
version: 3.0.0.pre2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Florian Hanke
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-11 00:00:00 +10:00
|
14
14
|
default_executable: picky
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 3.0.0.
|
35
|
+
version: 3.0.0.pre2
|
36
36
|
type: :development
|
37
37
|
version_requirements: *id002
|
38
38
|
description: Fast Ruby semantic text search engine with comfortable single field interface.
|
@@ -129,7 +129,6 @@ files:
|
|
129
129
|
- lib/picky/indexing/wrappers/category/location.rb
|
130
130
|
- lib/picky/interfaces/live_parameters.rb
|
131
131
|
- lib/picky/loader.rb
|
132
|
-
- lib/picky/loggers/search.rb
|
133
132
|
- lib/picky/no_source_specified_exception.rb
|
134
133
|
- lib/picky/performant.rb
|
135
134
|
- lib/picky/query/allocation.rb
|
@@ -240,7 +239,6 @@ files:
|
|
240
239
|
- spec/lib/indexing/bundle/redis_spec.rb
|
241
240
|
- spec/lib/interfaces/live_parameters_spec.rb
|
242
241
|
- spec/lib/loader_spec.rb
|
243
|
-
- spec/lib/loggers/search_spec.rb
|
244
242
|
- spec/lib/query/allocation_spec.rb
|
245
243
|
- spec/lib/query/allocations_spec.rb
|
246
244
|
- spec/lib/query/combination_spec.rb
|
@@ -368,7 +366,6 @@ test_files:
|
|
368
366
|
- spec/lib/indexing/bundle/redis_spec.rb
|
369
367
|
- spec/lib/interfaces/live_parameters_spec.rb
|
370
368
|
- spec/lib/loader_spec.rb
|
371
|
-
- spec/lib/loggers/search_spec.rb
|
372
369
|
- spec/lib/query/allocation_spec.rb
|
373
370
|
- spec/lib/query/allocations_spec.rb
|
374
371
|
- spec/lib/query/combination_spec.rb
|
data/lib/picky/loggers/search.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
module Picky
|
4
|
-
|
5
|
-
# TODO Remove?
|
6
|
-
#
|
7
|
-
module Loggers # :nodoc:all
|
8
|
-
|
9
|
-
# Log Proxy
|
10
|
-
#
|
11
|
-
class Search
|
12
|
-
|
13
|
-
attr_reader :logger
|
14
|
-
|
15
|
-
def initialize logger
|
16
|
-
@logger = logger
|
17
|
-
end
|
18
|
-
|
19
|
-
def log message
|
20
|
-
logger.info message
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|