picky 0.9.3 → 0.9.4

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.
@@ -3,6 +3,8 @@
3
3
  class Application
4
4
  class << self
5
5
 
6
+ attr_reader :apps
7
+
6
8
  # Finalize the subclass as soon as it
7
9
  # has finished loading.
8
10
  #
@@ -50,5 +52,11 @@ class Application
50
52
  @queries ||= Configuration::Queries.new
51
53
  end
52
54
 
55
+ # TODO Add more info.
56
+ #
57
+ def to_s
58
+ "#{self.name}:\n#{routing}"
59
+ end
60
+
53
61
  end
54
62
  end
@@ -12,6 +12,21 @@ class Array
12
12
  result
13
13
  end
14
14
  end
15
+ # Around 10% faster than the above.
16
+ #
17
+ # Returns a copy.
18
+ #
19
+ def clustered_uniq_fast
20
+ result = []
21
+ self.inject(nil) do |last, element|
22
+ if last == element
23
+ last
24
+ else
25
+ result << element && element
26
+ end
27
+ end
28
+ result
29
+ end
15
30
 
16
31
  # Accesses a random element of this array.
17
32
  #
@@ -174,15 +174,12 @@ module Index
174
174
  load_weights
175
175
  end
176
176
  def load_index
177
- timed_exclaim "Loading the index for #{identifier} from the cache."
178
177
  self.index = files.load_index
179
178
  end
180
179
  def load_similarity
181
- timed_exclaim "Loading the similarity for #{identifier} from the cache."
182
180
  self.similarity = files.load_similarity
183
181
  end
184
182
  def load_weights
185
- timed_exclaim "Loading the weights for #{identifier} from the cache."
186
183
  self.weights = files.load_weights
187
184
  end
188
185
 
@@ -29,12 +29,15 @@ module Index
29
29
  # Loads the index from cache.
30
30
  #
31
31
  def load_from_cache
32
+ timed_exclaim "Loading index #{identifier}."
32
33
  exact.load
33
34
  partial.load
34
35
  end
35
36
 
37
+ # TODO Move to initializer?
38
+ #
36
39
  def identifier
37
- "#{type.name} #{name}"
40
+ @identifier ||= "#{type.name} #{name}"
38
41
  end
39
42
 
40
43
  # Generates all caches for this category.
data/lib/picky/loader.rb CHANGED
@@ -44,10 +44,6 @@ module Loader
44
44
  # Load the user's application.
45
45
  #
46
46
  def self.load_application
47
- # Load the user's application.
48
- #
49
- exclaim 'Loading Application.'
50
-
51
47
  # Add lib dir to load path.
52
48
  #
53
49
  # add_lib_dir
@@ -72,13 +68,15 @@ module Loader
72
68
 
73
69
  # Finalize the applications.
74
70
  #
71
+ # TODO Problem: Reload Routes.
72
+ #
75
73
  Application.finalize_apps
76
74
 
77
75
  # TODO Rewrite
78
76
  #
79
77
  Query::Qualifiers.instance.prepare
80
78
 
81
- exclaim "Application loaded."
79
+ exclaim "Application #{Application.apps.map(&:name).join(', ')} loaded."
82
80
  end
83
81
 
84
82
  # Loads the framework.
@@ -4,13 +4,13 @@ module Query
4
4
  #
5
5
  class Allocation
6
6
 
7
- attr_reader :count, :ids, :score, :combinations
8
- attr_accessor :result_type
9
-
7
+ attr_reader :count, :ids, :score, :combinations, :result_type
8
+
10
9
  #
11
10
  #
12
- def initialize combinations
11
+ def initialize combinations, result_type
13
12
  @combinations = combinations
13
+ @result_type = result_type
14
14
  end
15
15
 
16
16
  def hash
@@ -24,7 +24,7 @@ module Query
24
24
  # Scores its combinations and caches the result.
25
25
  #
26
26
  def calculate_score weights
27
- @score || @score = @combinations.calculate_score(weights)
27
+ @score ||= @combinations.calculate_score(weights)
28
28
  end
29
29
 
30
30
  # Asks the combinations for the (intersected) ids.
@@ -61,7 +61,7 @@ module Query
61
61
  # Transform the allocation into result form.
62
62
  #
63
63
  def to_result
64
- [self.result_type, self.score, self.count, @combinations.to_result, self.ids] if count = self.count > 0
64
+ [self.result_type, self.score, self.count, @combinations.to_result, self.ids] if self.count > 0
65
65
  end
66
66
 
67
67
  # Json representation of this allocation.
@@ -15,9 +15,9 @@ module Query
15
15
  def initialize *index_types
16
16
  options = Hash === index_types.last ? index_types.pop : {}
17
17
  @index_types = index_types
18
- @weigher = Weigher.new index_types
19
- @tokenizer = (options[:tokenizer] || Tokenizers::Default::Query)
20
- @weights = (options[:weights] || Weights.new)
18
+ @weigher = options[:weigher] || Weigher.new(index_types)
19
+ @tokenizer = options[:tokenizer] || Tokenizers::Default::Query
20
+ @weights = options[:weights] || Weights.new
21
21
  end
22
22
 
23
23
  # Convenience method.
@@ -63,13 +63,21 @@ module Query
63
63
  #
64
64
  # TODO Smallify.
65
65
  #
66
+ # TODO Rename: allocations
67
+ #
66
68
  def sorted_allocations tokens
67
69
  # Get the allocations.
68
70
  #
71
+ # TODO Pass in reduce_to_amount (aka max_allocations)
72
+ #
73
+ # TODO uniq, score, sort in there
74
+ #
69
75
  allocations = @weigher.allocations_for tokens
70
76
 
71
77
  # Callbacks.
72
78
  #
79
+ # TODO Reduce before sort?
80
+ #
73
81
  reduce allocations
74
82
  remove_from allocations
75
83
 
@@ -99,12 +107,12 @@ module Query
99
107
  def remove_from allocations
100
108
  allocations.remove(identifiers_to_remove) if remove_identifiers?
101
109
  end
102
- # Override.
110
+ # Override. TODO No, redesign.
103
111
  #
104
112
  def identifiers_to_remove
105
- @identifiers_to_remove || @identifiers_to_remove = []
113
+ @identifiers_to_remove ||= []
106
114
  end
107
-
115
+
108
116
  # Packs the sorted allocations into results.
109
117
  #
110
118
  # This generates the id intersections. Lots of work going on.
@@ -9,13 +9,13 @@ module Query
9
9
  #
10
10
  class Combination
11
11
 
12
- attr_reader :token, :bundle
12
+ attr_reader :token, :bundle, :category_name
13
13
 
14
14
  def initialize token, category
15
- @token = token
16
- @category = category
17
- @bundle = category.bundle_for token
18
- @text = @token.text # don't want to use reset_similar already
15
+ @token = token
16
+ @category_name = category.name
17
+ @bundle = category.bundle_for token
18
+ @text = @token.text # don't want to use reset_similar already
19
19
  end
20
20
 
21
21
  # Note: Required for uniq!
@@ -26,20 +26,24 @@ module Query
26
26
 
27
27
  # Returns the weight of this combination.
28
28
  #
29
+ # TODO Really cache?
30
+ #
29
31
  def weight
30
- @weight || @weight = @bundle.weight(@text)
32
+ @weight ||= @bundle.weight(@text)
31
33
  end
32
34
 
33
35
  # Returns an array of ids for the given text.
34
36
  #
37
+ # TODO Really cache?
38
+ #
35
39
  def ids
36
- @ids || @ids = @bundle.ids(@text)
40
+ @ids ||= @bundle.ids(@text)
37
41
  end
38
42
 
39
43
  # The identifier for this combination.
40
44
  #
41
45
  def identifier
42
- @category.name
46
+ @category_name
43
47
  end
44
48
 
45
49
  # Is the identifier in the given identifiers?
@@ -62,7 +66,7 @@ module Query
62
66
  # "exact title:Peter*:peter"
63
67
  #
64
68
  def to_s
65
- "#{bundle.name} #{to_result.join(':')}"
69
+ "#{bundle.identifier} #{to_result.join(':')}"
66
70
  end
67
71
 
68
72
  end
@@ -2,16 +2,15 @@ module Query
2
2
 
3
3
  # Combinations are a number of Combination-s.
4
4
  #
5
- # They are, in effect, the core of an allocation.
5
+ # They are the core of an allocation.
6
6
  #
7
7
  class Combinations
8
8
 
9
- attr_reader :type, :combinations
9
+ attr_reader :combinations
10
10
 
11
11
  delegate :empty?, :to => :@combinations
12
12
 
13
- def initialize type, combinations = []
14
- @type = type # TODO Remove.
13
+ def initialize combinations = []
15
14
  @combinations = combinations
16
15
  end
17
16
 
@@ -22,13 +21,12 @@ module Query
22
21
  # Uses user specific weights to calculate a score for the combinations.
23
22
  #
24
23
  def calculate_score weights
25
- @score ||= sum_score
26
- @score + add_score(weights) # TODO Ok to just cache the weights?
24
+ total_score + weighted_score(weights)
27
25
  end
28
- def sum_score
26
+ def total_score
29
27
  @combinations.sum &:weight
30
28
  end
31
- def add_score weights
29
+ def weighted_score weights
32
30
  weights.score @combinations
33
31
  end
34
32
 
@@ -58,20 +56,18 @@ module Query
58
56
  # this precondition for a fast algorithm is always given.
59
57
  #
60
58
  id_arrays.sort! { |this_array, that_array| this_array.size <=> that_array.size }
61
-
59
+
62
60
  # Call the optimized C algorithm.
63
61
  #
64
62
  Performant::Array.memory_efficient_intersect id_arrays
65
63
  end
66
-
64
+
65
+ # Wrap the combinations into an allocation with the result_type
67
66
  #
68
- #
69
- def pack_into_allocation
70
- allocation = Allocation.new self
71
- allocation.result_type = @type.result_type # TODO Rewrite.
72
- allocation
67
+ def pack_into_allocation result_type
68
+ Allocation.new self, result_type
73
69
  end
74
-
70
+
75
71
  # Filters the tokens and identifiers such that only identifiers
76
72
  # that are passed in, remain, including their tokens.
77
73
  #
@@ -22,16 +22,12 @@ module Query
22
22
 
23
23
  # Optimization for ignoring tokens that allocate to nothing and
24
24
  # can be ignored.
25
- # For example in a context search, where "florian" is not
25
+ # For example in a special search, where "florian" is not
26
26
  # mapped to city, zip, or category.
27
27
  #
28
28
  possible_combinations.compact!
29
29
  expanded_combinations = expand_combinations_from possible_combinations
30
30
 
31
- # TODO Rewrite.
32
- #
33
- # expanded_combinations.map! { |expanded_combination| Combinations.new(index, expanded_combination) }
34
-
35
31
  #
36
32
  #
37
33
  next previous_allocations if expanded_combinations.empty?
@@ -51,15 +47,22 @@ module Query
51
47
  # [c,e]
52
48
  # ]
53
49
  #
54
- expanded_combinations = expanded_combinations.shift.zip(*expanded_combinations)
50
+ expanded_combinations = expanded_combinations.shift.zip *expanded_combinations
55
51
 
56
52
  # Wrap into a real combination.
57
53
  #
58
- expanded_combinations.map! { |expanded_combination| Combinations.new(index, expanded_combination) }
54
+ # expanded_combinations.map! { |expanded_combination| Combinations.new(expanded_combination).pack_into_allocation(index.result_type) }
59
55
 
60
56
  # Add the possible allocations to the ones we already have.
61
57
  #
62
- previous_allocations + expanded_combinations.map(&:pack_into_allocation)
58
+ # previous_allocations + expanded_combinations.map(&:pack_into_allocation)
59
+
60
+
61
+ # Add the wrapped possible allocations to the ones we already have.
62
+ #
63
+ previous_allocations + expanded_combinations.map! do |expanded_combination|
64
+ Combinations.new(expanded_combination).pack_into_allocation(index.result_type) # TODO Do not extract result_type. Remove pack_into_allocation.
65
+ end
63
66
  end)
64
67
  end
65
68
 
@@ -35,20 +35,17 @@ module Query
35
35
  #
36
36
  # Just kidding. It's far more complicated than that. Ha ha ha ha ;)
37
37
  #
38
- include Helpers::Cache
38
+ # Note: Cache this if more complicated weighings become necessary.
39
+ #
39
40
  def score combinations
40
- # TODO Rewrite to use the category
41
+ # TODO Beautify?
41
42
  #
42
- categories = combinations.map { |combination| combination.bundle.category }.clustered_uniq
43
+ # weight_for combinations.map(&:category).clustered_uniq_fast.map!(&:name)
43
44
 
44
- # Note: Caching will not be necessary anymore if the
45
- # mapping is not necessary anymore.
45
+ # TODO combinations could cluster uniq as combinations are added (since combinations don't change).
46
46
  #
47
- cached @weights_cache, categories do
48
- categories.map! &:name
49
- weight_for categories
50
- end
47
+ weight_for combinations.map(&:category_name).clustered_uniq_fast
51
48
  end
52
-
49
+
53
50
  end
54
51
  end
data/lib/picky/routing.rb CHANGED
@@ -142,4 +142,15 @@ class Routing
142
142
  String === url ? %r{#{url}} : url
143
143
  end
144
144
 
145
+ # TODO Beautify.
146
+ #
147
+ def to_s
148
+ routes.instance_variable_get(:@routes).map do |route|
149
+ path_info = route.conditions[:path_info]
150
+ anchored = Rack::Mount::Utils.regexp_anchored?(path_info)
151
+ anchored_ok = anchored ? "\u2713" : " "
152
+ "#{anchored_ok} #{path_info.source}"
153
+ end.join "\n"
154
+ end
155
+
145
156
  end
@@ -1,5 +1,4 @@
1
1
  # desc "Loads the application, including its configuration."
2
2
  task :application => :framework do
3
- puts "Running rake task 'application'."
4
3
  Loader.load_application
5
4
  end
@@ -0,0 +1,7 @@
1
+ desc "Shows the available URL paths"
2
+ task :routes => :application do
3
+ puts "Note: Anchored (\u2713) regexps are faster, e.g. /\\A.*\\Z/ or /^.*$/.\n\n"
4
+ Application.apps.each do |app|
5
+ p app
6
+ end
7
+ end
@@ -17,7 +17,25 @@ describe Array do
17
17
  left.should be_empty
18
18
  end
19
19
  end
20
-
20
+
21
+ describe "clustered_uniq_fast" do
22
+ it "should generate a new array" do
23
+ ary = [:test1, :test2, :test1]
24
+ ary.clustered_uniq_fast.object_id.should_not == ary.object_id
25
+ end
26
+ it "should not change clusteredly unique arrays" do
27
+ [:test1, :test2, :test1].clustered_uniq_fast.should == [:test1, :test2, :test1]
28
+ end
29
+ it "should not skip interspersed elements" do
30
+ [:test1, :test1, :test2, :test1].clustered_uniq_fast.should == [:test1, :test2, :test1]
31
+ end
32
+ it "should work like uniq if no interspersed elements exist" do
33
+ [:test1, :test1, :test2, :test2, :test3].clustered_uniq_fast.should == [:test1, :test2, :test3]
34
+ end
35
+ it "is fast" do
36
+ performance_of { [:test1, :test1, :test2, :test2, :test3].clustered_uniq_fast }.should < 0.00001
37
+ end
38
+ end
21
39
  describe "clustered_uniq" do
22
40
  it "should generate a new array" do
23
41
  ary = [:test1, :test2, :test1]
@@ -32,6 +50,9 @@ describe Array do
32
50
  it "should work like uniq if no interspersed elements exist" do
33
51
  [:test1, :test1, :test2, :test2, :test3].clustered_uniq.should == [:test1, :test2, :test3]
34
52
  end
53
+ it "is fast" do
54
+ performance_of { [:test1, :test1, :test2, :test2, :test3].clustered_uniq }.should < 0.00001
55
+ end
35
56
  end
36
57
 
37
58
  end
@@ -15,6 +15,7 @@ describe Index::Category do
15
15
 
16
16
  @partial = stub :partial, :dump => nil
17
17
  @category.stub! :partial => @partial
18
+ @category.stub! :exclaim
18
19
  end
19
20
 
20
21
  describe 'dump_caches' do
@@ -179,9 +180,6 @@ describe Index::Category do
179
180
  end
180
181
 
181
182
  describe 'generate_caches' do
182
- before(:each) do
183
- @category.stub! :exclaim
184
- end
185
183
  it 'should call three method in order' do
186
184
  @category.should_receive(:generate_caches_from_source).once.with().ordered
187
185
  @category.should_receive(:generate_partial).once.with().ordered
@@ -4,7 +4,7 @@ describe Query::Allocation do
4
4
 
5
5
  before(:each) do
6
6
  @combinations = stub :combinations
7
- @allocation = Query::Allocation.new @combinations
7
+ @allocation = Query::Allocation.new @combinations, :some_result_type
8
8
  end
9
9
 
10
10
  describe "eql?" do
@@ -30,12 +30,11 @@ describe Query::Allocation do
30
30
  context "allocation.count > 0" do
31
31
  before(:each) do
32
32
  @allocation.stub! :count => 10
33
- @allocation.stub! :result_type => :result_type
34
33
  @allocation.stub! :score => :score
35
34
  @allocation.stub! :ids => :ids
36
35
  end
37
36
  it "represents correctly" do
38
- @allocation.to_s.should == "Allocation: result_type, score, 10, combinations_result, ids"
37
+ @allocation.to_s.should == "Allocation: some_result_type, score, 10, combinations_result, ids"
39
38
  end
40
39
  end
41
40
  end
@@ -105,9 +104,8 @@ describe Query::Allocation do
105
104
  describe 'to_result' do
106
105
  context 'with few combinations' do
107
106
  before(:each) do
108
- @allocation = Query::Allocation.new stub(:combinations, :ids => [1,2,3], :to_result => [:some_result])
107
+ @allocation = Query::Allocation.new stub(:combinations, :ids => [1,2,3], :to_result => [:some_result]), :some_result_type
109
108
  @allocation.instance_variable_set :@score, :some_score
110
- @allocation.result_type = :some_result_type
111
109
  end
112
110
  context 'with ids' do
113
111
  it 'should output an array of information' do
@@ -120,9 +118,8 @@ describe Query::Allocation do
120
118
  context 'with results' do
121
119
  before(:each) do
122
120
  combinations = stub :combinations, :ids => [1,2,3], :to_result => [:some_result1, :some_result2]
123
- @allocation = Query::Allocation.new combinations
121
+ @allocation = Query::Allocation.new combinations, :some_result_type
124
122
  @allocation.instance_variable_set :@score, :some_score
125
- @allocation.result_type = :some_result_type
126
123
  end
127
124
  context 'with ids' do
128
125
  it 'should output an array of information' do
@@ -134,7 +131,7 @@ describe Query::Allocation do
134
131
  end
135
132
  context 'without results' do
136
133
  before(:each) do
137
- @allocation = Query::Allocation.new stub(:combinations, :ids => [], :to_result => [])
134
+ @allocation = Query::Allocation.new stub(:combinations, :ids => [], :to_result => []), :some_result_type
138
135
  @allocation.instance_variable_set :@score, :some_score
139
136
  end
140
137
  it 'should return nil' do
@@ -147,9 +144,8 @@ describe Query::Allocation do
147
144
 
148
145
  describe 'to_json' do
149
146
  before(:each) do
150
- @allocation = Query::Allocation.new stub(:combination, :ids => [1,2,3,4,5,6,7], :to_result => [:some_result1, :some_result2])
147
+ @allocation = Query::Allocation.new stub(:combination, :ids => [1,2,3,4,5,6,7], :to_result => [:some_result1, :some_result2]), :some_result_type
151
148
  @allocation.instance_variable_set :@score, :some_score
152
- @allocation.result_type = :some_result_type
153
149
  end
154
150
  it 'should output the correct json string' do
155
151
  @allocation.process! 20, 0
@@ -168,9 +164,9 @@ describe Query::Allocation do
168
164
 
169
165
  describe "<=>" do
170
166
  it "should sort higher first" do
171
- first = Query::Allocation.new []
167
+ first = Query::Allocation.new [], :some_result_type
172
168
  first.instance_variable_set :@score, 20
173
- second = Query::Allocation.new []
169
+ second = Query::Allocation.new [], :some_result_type
174
170
  second.instance_variable_set :@score, 10
175
171
 
176
172
  first.<=>(second).should == -1
@@ -179,11 +175,11 @@ describe Query::Allocation do
179
175
 
180
176
  describe "sort!" do
181
177
  it "should sort correctly" do
182
- first = Query::Allocation.new :whatever
178
+ first = Query::Allocation.new :whatever, :some_result_type
183
179
  first.instance_variable_set :@score, 20
184
- second = Query::Allocation.new :whatever
180
+ second = Query::Allocation.new :whatever, :some_result_type
185
181
  second.instance_variable_set :@score, 10
186
- third = Query::Allocation.new :whatever
182
+ third = Query::Allocation.new :whatever, :some_result_type
187
183
  third.instance_variable_set :@score, 5
188
184
 
189
185
  allocations = [second, third, first]
@@ -5,7 +5,7 @@ require 'spec_helper'
5
5
  describe 'Query::Combination' do
6
6
 
7
7
  before(:each) do
8
- @bundle = stub :bundle
8
+ @bundle = stub :bundle, :identifier => :bundle_name
9
9
  @token = stub :token, :text => :some_text, :partial => false, :similar? => true
10
10
  @category = stub :category, :bundle_for => @bundle, :name => :some_category_name
11
11
 
@@ -14,7 +14,6 @@ describe 'Query::Combination' do
14
14
 
15
15
  describe "to_s" do
16
16
  it "shows the combination's info" do
17
- @bundle.stub! :name => :bundle_name
18
17
  @token.stub! :to_result => :token_result
19
18
 
20
19
  @combination.to_s.should == 'bundle_name some_category_name:token_result'
@@ -7,17 +7,15 @@ describe 'Query::Combinations' do
7
7
  before(:each) do
8
8
  @combinations_ary = stub :combinations_ary
9
9
 
10
- type = stub :type, :result_type => :some_type
11
-
12
- @combinations = Query::Combinations.new type, @combinations_ary
10
+ @combinations = Query::Combinations.new @combinations_ary
13
11
  end
14
12
 
15
13
  describe "pack_into_allocation" do
16
14
  it "return an Allocation" do
17
- @combinations.pack_into_allocation.should be_kind_of(Query::Allocation)
15
+ @combinations.pack_into_allocation(:some_result_type).should be_kind_of(Query::Allocation)
18
16
  end
19
17
  it "returns an Allocation with specific result_type" do
20
- @combinations.pack_into_allocation.result_type.should == :some_type
18
+ @combinations.pack_into_allocation(:some_result_type).result_type.should == :some_result_type
21
19
  end
22
20
  end
23
21
 
@@ -28,54 +26,54 @@ describe 'Query::Combinations' do
28
26
 
29
27
  @combinations_ary = [@combination1, @combination2]
30
28
 
31
- @combinations = Query::Combinations.new :some_type, @combinations_ary
29
+ @combinations = Query::Combinations.new @combinations_ary
32
30
  end
33
31
  it "resultifies the combinations" do
34
32
  @combinations.to_result.should == [:result1, :result2]
35
33
  end
36
34
  end
37
35
 
38
- describe "add_score" do
36
+ describe "weighted_score" do
39
37
  it "uses the weights' score method" do
40
38
  weights = stub :weights
41
39
  weights.should_receive(:score).once.with @combinations_ary
42
40
 
43
- @combinations.add_score weights
41
+ @combinations.weighted_score weights
44
42
  end
45
43
  end
46
44
 
47
- describe "sum_score" do
45
+ describe "total_score" do
48
46
  before(:each) do
49
47
  @combination1 = stub :combination1, :weight => 3.14
50
48
  @combination2 = stub :combination2, :weight => 2.76
51
49
 
52
50
  @combinations_ary = [@combination1, @combination2]
53
51
 
54
- @combinations = Query::Combinations.new :some_type, @combinations_ary
52
+ @combinations = Query::Combinations.new @combinations_ary
55
53
  end
56
54
  it "sums the scores" do
57
- @combinations.sum_score.should == 5.90
55
+ @combinations.total_score.should == 5.90
58
56
  end
59
57
  end
60
58
 
61
59
  describe "calculate_score" do
62
60
  before(:each) do
63
- @combinations.stub! :sum_score => 0
64
- @combinations.stub! :add_score => 0
61
+ @combinations.stub! :total_score => 0
62
+ @combinations.stub! :weighted_score => 0
65
63
  end
66
64
  it "first sums, then weighs" do
67
- @combinations.should_receive(:sum_score).once.ordered.and_return 0
68
- @combinations.should_receive(:add_score).once.ordered.and_return 0
65
+ @combinations.should_receive(:total_score).once.ordered.and_return 0
66
+ @combinations.should_receive(:weighted_score).once.ordered.and_return 0
69
67
 
70
68
  @combinations.calculate_score :anything
71
69
  end
72
70
  it "calls sum_score" do
73
- @combinations.should_receive(:sum_score).once.with.and_return 0
71
+ @combinations.should_receive(:total_score).once.with.and_return 0
74
72
 
75
73
  @combinations.calculate_score :anything
76
74
  end
77
75
  it "calls sum_score" do
78
- @combinations.should_receive(:add_score).once.with(:weights).and_return 0
76
+ @combinations.should_receive(:weighted_score).once.with(:weights).and_return 0
79
77
 
80
78
  @combinations.calculate_score :weights
81
79
  end
@@ -95,7 +93,7 @@ describe 'Query::Combinations' do
95
93
  @combination2 = stub :combination2, :in? => true
96
94
  @combination3 = stub :combination3, :in? => true
97
95
 
98
- @combinations = Query::Combinations.new :some_type, [@combination1, @combination2, @combination3]
96
+ @combinations = Query::Combinations.new [@combination1, @combination2, @combination3]
99
97
  end
100
98
  it 'should remove the combinations' do
101
99
  @combinations.remove([:any]).should == [@combination1]
@@ -108,7 +106,7 @@ describe 'Query::Combinations' do
108
106
  @combination2 = stub :combination2, :in? => true
109
107
  @combination3 = stub :combination3, :in? => true
110
108
 
111
- @combinations = Query::Combinations.new :some_type, [@combination1, @combination2, @combination3]
109
+ @combinations = Query::Combinations.new [@combination1, @combination2, @combination3]
112
110
  end
113
111
  it 'should filter the combinations' do
114
112
  @combinations.keep([:any]).should == [@combination2, @combination3]
@@ -120,7 +118,7 @@ describe 'Query::Combinations' do
120
118
  @combination1 = stub :combination1
121
119
  @combination2 = stub :combination2
122
120
  @combination3 = stub :combination3
123
- @combinations = Query::Combinations.new :some_type, [@combination1, @combination2, @combination3]
121
+ @combinations = Query::Combinations.new [@combination1, @combination2, @combination3]
124
122
  end
125
123
  it "should intersect correctly" do
126
124
  @combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 3
9
- version: 0.9.3
8
+ - 4
9
+ version: 0.9.4
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-29 00:00:00 +02:00
17
+ date: 2010-10-30 00:00:00 +02:00
18
18
  default_executable: picky
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -129,6 +129,7 @@ files:
129
129
  - lib/tasks/cache.rake
130
130
  - lib/tasks/framework.rake
131
131
  - lib/tasks/index.rake
132
+ - lib/tasks/routes.rake
132
133
  - lib/tasks/server.rake
133
134
  - lib/tasks/shortcuts.rake
134
135
  - lib/tasks/solr.rake