picky 2.6.0 → 2.7.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/analyzer.rb +4 -4
- data/lib/picky/application.rb +6 -7
- data/lib/picky/backend/{backend.rb → base.rb} +31 -14
- data/lib/picky/backend/file/basic.rb +12 -4
- data/lib/picky/backend/file/json.rb +5 -5
- data/lib/picky/backend/file/text.rb +1 -1
- data/lib/picky/backend/files.rb +3 -9
- data/lib/picky/backend/redis/basic.rb +8 -0
- data/lib/picky/backend/redis/list_hash.rb +5 -5
- data/lib/picky/backend/redis/string_hash.rb +5 -5
- data/lib/picky/backend/redis.rb +5 -5
- data/lib/picky/bundle.rb +62 -0
- data/lib/picky/categories.rb +10 -9
- data/lib/picky/categories_indexed.rb +12 -7
- data/lib/picky/categories_indexing.rb +7 -9
- data/lib/picky/category.rb +38 -26
- data/lib/picky/category_indexed.rb +4 -20
- data/lib/picky/category_indexing.rb +71 -68
- data/lib/picky/generators/base.rb +6 -6
- data/lib/picky/generators/partial/substring.rb +28 -26
- data/lib/picky/generators/partial_generator.rb +3 -3
- data/lib/picky/generators/similarity/phonetic.rb +5 -5
- data/lib/picky/generators/similarity_generator.rb +2 -2
- data/lib/picky/generators/weights/logarithmic.rb +3 -3
- data/lib/picky/generators/weights_generator.rb +2 -2
- data/lib/picky/index/base.rb +13 -10
- data/lib/picky/index/base_indexed.rb +2 -0
- data/lib/picky/index/base_indexing.rb +65 -57
- data/lib/picky/indexed/bundle/base.rb +21 -86
- data/lib/picky/indexed/bundle/memory.rb +5 -12
- data/lib/picky/indexed/bundle/redis.rb +42 -0
- data/lib/picky/indexed/wrappers/bundle/wrapper.rb +3 -3
- data/lib/picky/indexers/base.rb +20 -3
- data/lib/picky/indexers/parallel.rb +32 -14
- data/lib/picky/indexers/serial.rb +29 -26
- data/lib/picky/indexes.rb +5 -3
- data/lib/picky/indexes_indexed.rb +3 -15
- data/lib/picky/indexes_indexing.rb +18 -21
- data/lib/picky/indexing/bundle/base.rb +64 -45
- data/lib/picky/indexing/bundle/memory.rb +0 -4
- data/lib/picky/loader.rb +7 -6
- data/lib/picky/query/allocation.rb +3 -3
- data/lib/picky/query/token.rb +5 -1
- data/lib/picky/search.rb +5 -0
- data/lib/picky/sources/base.rb +21 -2
- data/lib/picky/sources/db.rb +0 -7
- data/lib/picky/statistics.rb +9 -12
- data/lib/picky/tokenizers/location.rb +1 -1
- data/lib/tasks/checks.rake +8 -6
- data/lib/tasks/index.rake +14 -20
- data/lib/tasks/server.rake +18 -2
- data/lib/tasks/statistics.rake +27 -14
- data/lib/tasks/todo.rake +2 -2
- data/lib/tasks/try.rake +12 -27
- data/spec/lib/application_spec.rb +1 -1
- data/spec/lib/backend/file/basic_spec.rb +6 -6
- data/spec/lib/backend/file/json_spec.rb +11 -6
- data/spec/lib/backend/file/marshal_spec.rb +11 -6
- data/spec/lib/backend/files_spec.rb +21 -7
- data/spec/lib/backend/redis/basic_spec.rb +6 -0
- data/spec/lib/backend/redis/list_hash_spec.rb +9 -3
- data/spec/lib/backend/redis/string_hash_spec.rb +7 -1
- data/spec/lib/backend/redis_spec.rb +22 -12
- data/spec/lib/categories_indexed_spec.rb +2 -2
- data/spec/lib/category_indexing_spec.rb +12 -33
- data/spec/lib/category_spec.rb +22 -0
- data/spec/lib/index/base_indexing_spec.rb +30 -0
- data/spec/lib/indexed/bundle/memory_spec.rb +13 -20
- data/spec/lib/indexers/base_spec.rb +39 -4
- data/spec/lib/indexers/parallel_spec.rb +2 -10
- data/spec/lib/indexers/serial_spec.rb +11 -26
- data/spec/lib/indexes_class_spec.rb +4 -4
- data/spec/lib/indexes_indexed_spec.rb +2 -2
- data/spec/lib/indexes_indexing_spec.rb +6 -10
- data/spec/lib/indexes_spec.rb +3 -3
- data/spec/lib/indexing/bundle/{super_base_spec.rb → base_spec.rb} +2 -2
- data/spec/lib/indexing/bundle/memory_partial_generation_speed_spec.rb +3 -3
- data/spec/lib/indexing/bundle/memory_spec.rb +16 -14
- data/spec/lib/indexing/bundle/redis_spec.rb +18 -16
- data/spec/lib/query/allocation_spec.rb +1 -1
- data/spec/lib/query/token_spec.rb +5 -7
- data/spec/lib/sources/base_spec.rb +53 -0
- data/spec/lib/sources/db_spec.rb +0 -7
- metadata +11 -12
- data/lib/picky/indexers/solr.rb +0 -56
- data/lib/picky/indexing/bundle/super_base.rb +0 -61
- data/lib/picky/solr/schema_generator.rb +0 -74
- data/lib/tasks/search.rake +0 -9
- data/lib/tasks/shortcuts.rake +0 -32
- data/lib/tasks/solr.rake +0 -36
@@ -2,14 +2,49 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Indexers::Base do
|
4
4
|
|
5
|
-
let(:
|
5
|
+
let(:some_index_or_category) { stub :some_index_or_category, :name => 'some index or category' }
|
6
|
+
let(:indexer) { described_class.new some_index_or_category }
|
7
|
+
|
8
|
+
describe 'index_or_category' do
|
9
|
+
it 'returns the right thing' do
|
10
|
+
indexer.index_or_category.should == some_index_or_category
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'source' do
|
15
|
+
it 'delegates it to the index or category' do
|
16
|
+
some_index_or_category.should_receive(:source).once.with
|
17
|
+
|
18
|
+
indexer.source
|
19
|
+
end
|
20
|
+
end
|
6
21
|
|
7
22
|
describe 'index' do
|
8
23
|
it 'messages, then processed' do
|
9
|
-
indexer.should_receive(:
|
10
|
-
indexer.should_receive(:
|
24
|
+
indexer.should_receive(:start_indexing_message).once.with.ordered
|
25
|
+
indexer.should_receive(:prepare).once.with(:categories).ordered
|
26
|
+
indexer.should_receive(:process).once.with(:categories).ordered
|
27
|
+
indexer.should_receive(:finish_indexing_message).once.with.ordered
|
28
|
+
|
29
|
+
indexer.index :categories
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'prepare' do
|
34
|
+
it 'calls a certain method on each category' do
|
35
|
+
some_index_or_category.stub! :source
|
36
|
+
|
37
|
+
category1 = stub :category1
|
38
|
+
category2 = stub :category2
|
39
|
+
category3 = stub :category3
|
40
|
+
|
41
|
+
categories = [category1, category2, category3]
|
42
|
+
|
43
|
+
categories.each do |category|
|
44
|
+
category.should_receive(:prepare_index_directory).once.with
|
45
|
+
end
|
11
46
|
|
12
|
-
indexer.
|
47
|
+
indexer.prepare categories
|
13
48
|
end
|
14
49
|
end
|
15
50
|
|
@@ -4,9 +4,9 @@ describe Indexers::Parallel do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@source = stub :source
|
7
|
-
@
|
7
|
+
@index = stub :index, :name => :some_index, :source => @source
|
8
|
+
|
8
9
|
@categories = stub :categories
|
9
|
-
@index = stub :index, :name => :some_index, :categories => @categories
|
10
10
|
|
11
11
|
@indexer = described_class.new @index
|
12
12
|
@indexer.stub! :timed_exclaim
|
@@ -25,12 +25,4 @@ describe Indexers::Parallel do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
describe "index" do
|
29
|
-
it "should process" do
|
30
|
-
@indexer.should_receive(:process).once.with
|
31
|
-
|
32
|
-
@indexer.index
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
28
|
end
|
@@ -5,39 +5,28 @@ describe Indexers::Serial do
|
|
5
5
|
before(:each) do
|
6
6
|
@tokenizer = stub :tokenizer
|
7
7
|
@source = stub :source
|
8
|
-
@category = stub :category,
|
8
|
+
@category = stub :category,
|
9
|
+
:identifier => :some_identifier,
|
10
|
+
:tokenizer => @tokenizer,
|
11
|
+
:source => @source
|
9
12
|
|
10
13
|
@indexer = described_class.new @category
|
11
14
|
@indexer.stub! :timed_exclaim
|
12
15
|
end
|
13
16
|
|
14
|
-
describe "
|
15
|
-
it "returns the right one" do
|
16
|
-
@indexer.tokenizer.should == @tokenizer
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "indexing_message" do
|
17
|
+
describe "start_indexing_message" do
|
21
18
|
it "informs the user about what it is going to index" do
|
22
|
-
@indexer.should_receive(:timed_exclaim).once.with '"some_identifier": Starting serial
|
19
|
+
@indexer.should_receive(:timed_exclaim).once.with '"some_identifier": Starting serial data preparation.'
|
23
20
|
|
24
|
-
@indexer.
|
21
|
+
@indexer.start_indexing_message
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
28
|
-
describe "
|
29
|
-
it "
|
30
|
-
@indexer.should_receive(:
|
31
|
-
|
32
|
-
@indexer.tokenizer
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "index" do
|
37
|
-
it "should process" do
|
38
|
-
@indexer.should_receive(:process).once.with
|
25
|
+
describe "finish_indexing_message" do
|
26
|
+
it "informs the user about what it is going to index" do
|
27
|
+
@indexer.should_receive(:timed_exclaim).once.with '"some_identifier": Finished serial data preparation.'
|
39
28
|
|
40
|
-
@indexer.
|
29
|
+
@indexer.finish_indexing_message
|
41
30
|
end
|
42
31
|
end
|
43
32
|
|
@@ -47,8 +36,4 @@ describe Indexers::Serial do
|
|
47
36
|
end
|
48
37
|
end
|
49
38
|
|
50
|
-
describe "chunked" do
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
39
|
end
|
@@ -7,11 +7,11 @@ describe Indexes do
|
|
7
7
|
@indexes = described_class.instance
|
8
8
|
end
|
9
9
|
|
10
|
-
describe '
|
10
|
+
describe 'clear_indexes' do
|
11
11
|
it 'clears the indexes' do
|
12
|
-
|
12
|
+
@indexes.register @index
|
13
13
|
|
14
|
-
|
14
|
+
@indexes.clear_indexes
|
15
15
|
|
16
16
|
@indexes.indexes.should == []
|
17
17
|
end
|
@@ -19,7 +19,7 @@ describe Indexes do
|
|
19
19
|
|
20
20
|
describe 'register' do
|
21
21
|
it 'adds the given index to the indexes' do
|
22
|
-
|
22
|
+
@indexes.clear_indexes
|
23
23
|
|
24
24
|
Indexes.register @index
|
25
25
|
|
@@ -38,12 +38,12 @@ describe Indexes do
|
|
38
38
|
end
|
39
39
|
describe 'clear' do
|
40
40
|
it 'clears the indexes' do
|
41
|
-
indexes.
|
41
|
+
indexes.clear_indexes
|
42
42
|
|
43
43
|
indexes.indexes.should == []
|
44
44
|
end
|
45
45
|
it 'clears the mapping' do
|
46
|
-
indexes.
|
46
|
+
indexes.clear_indexes
|
47
47
|
|
48
48
|
indexes.index_mapping.should == {}
|
49
49
|
end
|
@@ -21,7 +21,6 @@ describe Indexes do
|
|
21
21
|
end
|
22
22
|
describe 'index_for_tests' do
|
23
23
|
it 'takes a snapshot, then indexes and caches each' do
|
24
|
-
indexes.should_receive(:take_snapshot).once.with.ordered
|
25
24
|
@index1.should_receive(:index).once.with.ordered
|
26
25
|
@index2.should_receive(:index).once.with.ordered
|
27
26
|
|
@@ -33,9 +32,9 @@ describe Indexes do
|
|
33
32
|
indexes.indexes.should == [@index1, @index2]
|
34
33
|
end
|
35
34
|
end
|
36
|
-
describe '
|
35
|
+
describe 'clear_indexes' do
|
37
36
|
it 'clears the indexes' do
|
38
|
-
indexes.
|
37
|
+
indexes.clear_indexes
|
39
38
|
|
40
39
|
indexes.indexes.should == []
|
41
40
|
end
|
@@ -50,13 +49,10 @@ describe Indexes do
|
|
50
49
|
end
|
51
50
|
end
|
52
51
|
end
|
53
|
-
it_delegates_each :
|
54
|
-
it_delegates_each :
|
55
|
-
it_delegates_each :
|
56
|
-
it_delegates_each :
|
57
|
-
it_delegates_each :check_caches
|
58
|
-
it_delegates_each :clear_caches
|
59
|
-
it_delegates_each :create_directory_structure
|
52
|
+
it_delegates_each :check
|
53
|
+
it_delegates_each :clear
|
54
|
+
it_delegates_each :backup
|
55
|
+
it_delegates_each :restore
|
60
56
|
end
|
61
57
|
|
62
58
|
end
|
data/spec/lib/indexes_spec.rb
CHANGED
@@ -16,11 +16,11 @@ describe Indexes do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
describe '
|
19
|
+
describe 'clear_indexes' do
|
20
20
|
it 'clears the indexes' do
|
21
21
|
@indexes.register @index
|
22
22
|
|
23
|
-
@indexes.
|
23
|
+
@indexes.clear_indexes
|
24
24
|
|
25
25
|
@indexes.indexes.should == []
|
26
26
|
end
|
@@ -28,7 +28,7 @@ describe Indexes do
|
|
28
28
|
|
29
29
|
describe 'register' do
|
30
30
|
it 'adds the given index to the indexes' do
|
31
|
-
@indexes.
|
31
|
+
@indexes.clear_indexes
|
32
32
|
|
33
33
|
@indexes.register @index
|
34
34
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Indexing::Bundle::
|
3
|
+
describe Indexing::Bundle::Base do
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@configuration = stub :configuration, :identifier => 'some_identifier'
|
7
7
|
Backend::Files.stub! :new
|
8
8
|
@similarity = Similarity::DoubleMetaphone.new 3
|
9
|
-
@bundle = described_class.new :some_name, @configuration, @similarity
|
9
|
+
@bundle = described_class.new :some_name, @configuration, :some_weights, :some_partial, @similarity
|
10
10
|
end
|
11
11
|
|
12
12
|
describe 'identifier' do
|
@@ -27,9 +27,9 @@ describe Indexing::Bundle::Memory do
|
|
27
27
|
describe 'speed' do
|
28
28
|
context 'medium arrays' do
|
29
29
|
before(:each) do
|
30
|
-
random_keys
|
31
|
-
random_ids
|
32
|
-
@exact.
|
30
|
+
random_keys = generate_random_keys 300
|
31
|
+
random_ids = generate_random_ids 300
|
32
|
+
@exact.inverted = Hash[random_keys.zip(random_ids)]
|
33
33
|
end
|
34
34
|
it 'should be fast' do
|
35
35
|
performance_of do
|
@@ -10,19 +10,19 @@ describe Indexing::Bundle::Memory do
|
|
10
10
|
@weights = stub :weights
|
11
11
|
@similarity = stub :similarity
|
12
12
|
end
|
13
|
-
let(:index) { described_class.new :some_name, @category, @
|
13
|
+
let(:index) { described_class.new :some_name, @category, @weights, @partial, @similarity }
|
14
14
|
|
15
15
|
describe 'raise_cache_missing' do
|
16
16
|
it 'does something' do
|
17
17
|
expect {
|
18
18
|
index.raise_cache_missing :similarity
|
19
|
-
}.to raise_error("Error: The similarity cache for some_index:some_category:some_name is missing.")
|
19
|
+
}.to raise_error("Error: The similarity cache for test:some_index:some_category:some_name is missing.")
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe 'warn_cache_small' do
|
24
24
|
it 'warns the user' do
|
25
|
-
index.should_receive(:warn).once.with "Warning: similarity cache for some_index:some_category:some_name smaller than 16 bytes."
|
25
|
+
index.should_receive(:warn).once.with "Warning: similarity cache for test:some_index:some_category:some_name smaller than 16 bytes."
|
26
26
|
|
27
27
|
index.warn_cache_small :similarity
|
28
28
|
end
|
@@ -30,7 +30,7 @@ describe Indexing::Bundle::Memory do
|
|
30
30
|
|
31
31
|
describe 'identifier' do
|
32
32
|
it 'should return a specific identifier' do
|
33
|
-
index.identifier.should == 'some_index:some_category:some_name'
|
33
|
+
index.identifier.should == 'test:some_index:some_category:some_name'
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -40,9 +40,9 @@ describe Indexing::Bundle::Memory do
|
|
40
40
|
index.stub! :index => {}
|
41
41
|
end
|
42
42
|
it 'should assign it an empty array' do
|
43
|
-
index.
|
43
|
+
index.initialize_inverted_index_for :some_token
|
44
44
|
|
45
|
-
index.
|
45
|
+
index.inverted[:some_token].should == []
|
46
46
|
end
|
47
47
|
end
|
48
48
|
context 'token already assigned' do
|
@@ -50,7 +50,7 @@ describe Indexing::Bundle::Memory do
|
|
50
50
|
index.stub! :index => { :some_token => :already_assigned }
|
51
51
|
end
|
52
52
|
it 'should not assign it anymore' do
|
53
|
-
index.
|
53
|
+
index.initialize_inverted_index_for :some_token
|
54
54
|
|
55
55
|
index.index[:some_token].should == :already_assigned
|
56
56
|
end
|
@@ -64,8 +64,8 @@ describe Indexing::Bundle::Memory do
|
|
64
64
|
index.stub! :files => files
|
65
65
|
|
66
66
|
@ary = stub :ary
|
67
|
-
|
68
|
-
index.stub! :
|
67
|
+
inverted = stub :inverted, :[] => @ary
|
68
|
+
index.stub! :inverted => inverted
|
69
69
|
end
|
70
70
|
context 'id key format' do
|
71
71
|
before(:each) do
|
@@ -101,11 +101,11 @@ describe Indexing::Bundle::Memory do
|
|
101
101
|
|
102
102
|
describe 'load_from_index_file' do
|
103
103
|
it 'should call two methods in order' do
|
104
|
-
index.should_receive(:
|
104
|
+
index.should_receive(:load_from_prepared_index_generation_message).once.ordered
|
105
105
|
index.should_receive(:clear).once.ordered
|
106
106
|
index.should_receive(:retrieve).once.ordered
|
107
107
|
|
108
|
-
index.
|
108
|
+
index.load_from_prepared_index_file
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -129,7 +129,7 @@ describe Indexing::Bundle::Memory do
|
|
129
129
|
|
130
130
|
describe 'generate_caches_from_source' do
|
131
131
|
it 'should call two methods in order' do
|
132
|
-
index.should_receive(:
|
132
|
+
index.should_receive(:load_from_prepared_index_file).once.ordered
|
133
133
|
index.should_receive(:generate_caches_from_memory).once.ordered
|
134
134
|
|
135
135
|
index.generate_caches_from_source
|
@@ -138,7 +138,9 @@ describe Indexing::Bundle::Memory do
|
|
138
138
|
|
139
139
|
describe 'dump' do
|
140
140
|
it 'should trigger dumps' do
|
141
|
-
index.
|
141
|
+
index.stub! :timed_exclaim
|
142
|
+
|
143
|
+
index.should_receive(:dump_inverted).once.with
|
142
144
|
index.should_receive(:dump_weights).once.with
|
143
145
|
index.should_receive(:dump_similarity).once.with
|
144
146
|
index.should_receive(:dump_configuration).once.with
|
@@ -260,7 +262,7 @@ describe Indexing::Bundle::Memory do
|
|
260
262
|
|
261
263
|
describe 'initialization' do
|
262
264
|
it 'should initialize the index correctly' do
|
263
|
-
index.
|
265
|
+
index.inverted.should == {}
|
264
266
|
end
|
265
267
|
it 'should initialize the weights index correctly' do
|
266
268
|
index.weights.should == {}
|
@@ -10,19 +10,19 @@ describe Indexing::Bundle::Redis do
|
|
10
10
|
@weights = stub :weights
|
11
11
|
@similarity = stub :similarity
|
12
12
|
end
|
13
|
-
let(:index) { described_class.new :some_name, @category, @
|
13
|
+
let(:index) { described_class.new :some_name, @category, @weights, @partial, @similarity }
|
14
14
|
|
15
15
|
describe 'raise_cache_missing' do
|
16
16
|
it 'does something' do
|
17
17
|
expect {
|
18
18
|
index.raise_cache_missing :similarity
|
19
|
-
}.to raise_error("Error: The similarity cache for some_index:some_category:some_name is missing.")
|
19
|
+
}.to raise_error("Error: The similarity cache for test:some_index:some_category:some_name is missing.")
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe 'warn_cache_small' do
|
24
24
|
it 'warns the user' do
|
25
|
-
index.should_receive(:warn).once.with "Warning: similarity cache for some_index:some_category:some_name smaller than 16 bytes."
|
25
|
+
index.should_receive(:warn).once.with "Warning: similarity cache for test:some_index:some_category:some_name smaller than 16 bytes."
|
26
26
|
|
27
27
|
index.warn_cache_small :similarity
|
28
28
|
end
|
@@ -30,19 +30,19 @@ describe Indexing::Bundle::Redis do
|
|
30
30
|
|
31
31
|
describe 'identifier' do
|
32
32
|
it 'should return a specific identifier' do
|
33
|
-
index.identifier.should == 'some_index:some_category:some_name'
|
33
|
+
index.identifier.should == 'test:some_index:some_category:some_name'
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe 'initialize_index_for' do
|
38
38
|
context 'token not yet assigned' do
|
39
39
|
before(:each) do
|
40
|
-
index.stub! :
|
40
|
+
index.stub! :inverted => {}
|
41
41
|
end
|
42
42
|
it 'should assign it an empty array' do
|
43
|
-
index.
|
43
|
+
index.initialize_inverted_index_for :some_token
|
44
44
|
|
45
|
-
index.
|
45
|
+
index.inverted[:some_token].should == []
|
46
46
|
end
|
47
47
|
end
|
48
48
|
context 'token already assigned' do
|
@@ -50,7 +50,7 @@ describe Indexing::Bundle::Redis do
|
|
50
50
|
index.stub! :index => { :some_token => :already_assigned }
|
51
51
|
end
|
52
52
|
it 'should not assign it anymore' do
|
53
|
-
index.
|
53
|
+
index.initialize_inverted_index_for :some_token
|
54
54
|
|
55
55
|
index.index[:some_token].should == :already_assigned
|
56
56
|
end
|
@@ -64,8 +64,8 @@ describe Indexing::Bundle::Redis do
|
|
64
64
|
index.stub! :files => files
|
65
65
|
|
66
66
|
@ary = stub :ary
|
67
|
-
|
68
|
-
index.stub! :
|
67
|
+
inverted = stub :inverted, :[] => @ary
|
68
|
+
index.stub! :inverted => inverted
|
69
69
|
end
|
70
70
|
context 'id key format' do
|
71
71
|
before(:each) do
|
@@ -99,13 +99,13 @@ describe Indexing::Bundle::Redis do
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
describe '
|
102
|
+
describe 'load_from_prepared_index_file' do
|
103
103
|
it 'should call two methods in order' do
|
104
|
-
index.should_receive(:
|
104
|
+
index.should_receive(:load_from_prepared_index_generation_message).once.ordered
|
105
105
|
index.should_receive(:clear).once.ordered
|
106
106
|
index.should_receive(:retrieve).once.ordered
|
107
107
|
|
108
|
-
index.
|
108
|
+
index.load_from_prepared_index_file
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -129,7 +129,7 @@ describe Indexing::Bundle::Redis do
|
|
129
129
|
|
130
130
|
describe 'generate_caches_from_source' do
|
131
131
|
it 'should call two methods in order' do
|
132
|
-
index.should_receive(:
|
132
|
+
index.should_receive(:load_from_prepared_index_file).once.ordered
|
133
133
|
index.should_receive(:generate_caches_from_memory).once.ordered
|
134
134
|
|
135
135
|
index.generate_caches_from_source
|
@@ -138,7 +138,9 @@ describe Indexing::Bundle::Redis do
|
|
138
138
|
|
139
139
|
describe 'dump' do
|
140
140
|
it 'should trigger dumps' do
|
141
|
-
index.
|
141
|
+
index.stub! :timed_exclaim
|
142
|
+
|
143
|
+
index.should_receive(:dump_inverted).once.with
|
142
144
|
index.should_receive(:dump_weights).once.with
|
143
145
|
index.should_receive(:dump_similarity).once.with
|
144
146
|
index.should_receive(:dump_configuration).once.with
|
@@ -256,7 +258,7 @@ describe Indexing::Bundle::Redis do
|
|
256
258
|
|
257
259
|
describe 'initialization' do
|
258
260
|
it 'should initialize the index correctly' do
|
259
|
-
index.
|
261
|
+
index.inverted.should == {}
|
260
262
|
end
|
261
263
|
it 'should initialize the weights index correctly' do
|
262
264
|
index.weights.should == {}
|
@@ -34,7 +34,7 @@ describe Query::Allocation do
|
|
34
34
|
@allocation.stub! :ids => :ids
|
35
35
|
end
|
36
36
|
it "represents correctly" do
|
37
|
-
@allocation.to_s.should == "Allocation:
|
37
|
+
@allocation.to_s.should == "Allocation([:some_result_identifier, :score, 10, \"combinations_result\", :ids])"
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -87,13 +87,11 @@ describe Query::Token do
|
|
87
87
|
it 'generates all similar' do
|
88
88
|
@token.next_similar(@bundle).should == nil
|
89
89
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
# @token.text.should == :nonsimilar
|
96
|
-
# end
|
90
|
+
it 'should have a certain text' do
|
91
|
+
@token.next_similar @bundle
|
92
|
+
|
93
|
+
@token.text.should == :nonsimilar
|
94
|
+
end
|
97
95
|
end
|
98
96
|
end
|
99
97
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sources::Base do
|
4
|
+
context 'with the base class' do
|
5
|
+
let(:source) { described_class.new }
|
6
|
+
|
7
|
+
describe 'connect_backend' do
|
8
|
+
it 'exists' do
|
9
|
+
source.connect_backend
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'take_snapshot' do
|
14
|
+
it 'exists and takes a single parameter' do
|
15
|
+
source.take_snapshot :some_index
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with subclass' do
|
21
|
+
let(:take_snapshot_called) { 0 }
|
22
|
+
let(:subclass) do
|
23
|
+
Class.new(described_class) do
|
24
|
+
def take_snapshot index
|
25
|
+
index.call index
|
26
|
+
end
|
27
|
+
end.new
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'with snapshot' do
|
31
|
+
it 'is called only once when called in nested blocks' do
|
32
|
+
index = stub :index, :identifier => :some_index
|
33
|
+
subclass.stub! :timed_exclaim
|
34
|
+
|
35
|
+
index.should_receive(:call).once.with index
|
36
|
+
|
37
|
+
subclass.with_snapshot(index) do
|
38
|
+
subclass.with_snapshot(index) do
|
39
|
+
subclass.with_snapshot(index) do
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
subclass.with_snapshot(index) do
|
44
|
+
subclass.with_snapshot(index) do
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/spec/lib/sources/db_spec.rb
CHANGED
@@ -102,13 +102,6 @@ describe Sources::DB do
|
|
102
102
|
@source.should_receive(:get_data).any_number_of_times.and_return [[:some_id, 'some_text']].cycle
|
103
103
|
@source.stub! :count => 17
|
104
104
|
end
|
105
|
-
it 'calls connect_backend' do
|
106
|
-
@source.should_receive(:connect_backend).once.with()
|
107
|
-
|
108
|
-
@source.harvest @category do |id, text|
|
109
|
-
p [id, text]
|
110
|
-
end
|
111
|
-
end
|
112
105
|
end
|
113
106
|
|
114
107
|
describe "harvest_statement_with_offset" do
|