picky 3.5.0 → 3.5.1

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.
Files changed (39) hide show
  1. data/lib/picky/bundle.rb +37 -4
  2. data/lib/picky/bundle_indexed.rb +12 -8
  3. data/lib/picky/bundle_indexing.rb +6 -26
  4. data/lib/picky/bundle_realtime.rb +26 -16
  5. data/lib/picky/category_indexing.rb +1 -3
  6. data/lib/picky/category_realtime.rb +1 -1
  7. data/lib/picky/character_substituters/west_european.rb +4 -4
  8. data/lib/picky/generators/partial/infix.rb +0 -47
  9. data/lib/picky/generators/partial/none.rb +0 -6
  10. data/lib/picky/generators/partial/substring.rb +0 -47
  11. data/lib/picky/generators/similarity/double_metaphone.rb +3 -3
  12. data/lib/picky/generators/similarity/metaphone.rb +3 -3
  13. data/lib/picky/generators/similarity/phonetic.rb +12 -24
  14. data/lib/picky/generators/similarity/soundex.rb +3 -3
  15. data/lib/picky/generators/weights/constant.rb +46 -0
  16. data/lib/picky/generators/weights/dynamic.rb +37 -0
  17. data/lib/picky/generators/weights/logarithmic.rb +0 -10
  18. data/lib/picky/generators/weights/runtime.rb +41 -0
  19. data/lib/picky/loader.rb +3 -3
  20. data/lib/picky/query/allocations.rb +2 -1
  21. data/lib/picky/query/tokens.rb +0 -10
  22. data/spec/lib/category_indexed_spec.rb +1 -1
  23. data/spec/lib/character_substituters/west_european_spec.rb +11 -13
  24. data/spec/lib/generators/partial/infix_spec.rb +161 -161
  25. data/spec/lib/generators/partial/none_spec.rb +3 -3
  26. data/spec/lib/generators/partial/postfix_spec.rb +109 -109
  27. data/spec/lib/generators/partial/substring_spec.rb +190 -190
  28. data/spec/lib/generators/similarity/double_metaphone_spec.rb +38 -38
  29. data/spec/lib/generators/similarity/metaphone_spec.rb +38 -38
  30. data/spec/lib/generators/similarity/soundex_spec.rb +38 -38
  31. data/spec/lib/generators/weights/constant_spec.rb +37 -0
  32. data/spec/lib/generators/weights/dynamic_spec.rb +27 -0
  33. data/spec/lib/generators/weights/logarithmic_spec.rb +10 -15
  34. data/spec/lib/indexed/bundle_spec.rb +3 -2
  35. data/spec/lib/indexed/wrappers/bundle/calculation_spec.rb +8 -8
  36. data/spec/lib/indexing/bundle_spec.rb +5 -3
  37. data/spec/specific/dynamic_weights_spec.rb +44 -0
  38. metadata +36 -28
  39. data/lib/picky/generators/base.rb +0 -19
@@ -13,48 +13,48 @@ describe Picky::Generators::Similarity::DoubleMetaphone do
13
13
  @similarity.encoded(text).should == expected
14
14
  end
15
15
  end
16
- def self.it_should_generate_from index, expected
17
- it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
- @similarity.generate_from(index).should == expected
19
- end
20
- end
16
+ # def self.it_should_generate_from index, expected
17
+ # it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
+ # @similarity.generate_from(index).should == expected
19
+ # end
20
+ # end
21
21
 
22
22
  it_should_encode :meier, :MR
23
23
  it_should_encode :grossberger, :KRSP
24
24
  it_should_encode :hadelbla, :HTLP
25
25
 
26
- it_should_generate_from({}, {})
27
- it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier, :meier]) # should be correctly ordered
28
- it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :MR => [:maier, :meier], :HLPL => [:hallaballa])
29
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan, :susanne], :PRTR => [:bruderer])
30
-
31
- describe 'with reduced amount' do
32
- before(:each) do
33
- @similarity = described_class.new(1)
34
- end
35
- it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier])
36
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan], :PRTR => [:bruderer])
37
- end
38
-
39
- describe 'hashify' do
40
- it 'should turn an empty list into an empty hash' do
41
- @similarity.send(:hashify, []).should == {}
42
- end
43
- it 'should turn the list into an unordered similarity' do
44
- @similarity.send(:hashify, [:meier, :maier]).should == { :MR => [:meier, :maier] }
45
- end
46
- it 'should turn the list into a encoded hash' do
47
- @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :MR => [:meier, :maier], :PTR => [:peter] }
48
- end
49
- end
50
-
51
- context 'integration' do
52
- it 'should return the right ordered array' do
53
- index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
- code = @similarity.encoded :maier
55
-
56
- index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
- end
58
- end
26
+ # it_should_generate_from({}, {})
27
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier, :meier]) # should be correctly ordered
28
+ # it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :MR => [:maier, :meier], :HLPL => [:hallaballa])
29
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan, :susanne], :PRTR => [:bruderer])
30
+
31
+ # describe 'with reduced amount' do
32
+ # before(:each) do
33
+ # @similarity = described_class.new(1)
34
+ # end
35
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier])
36
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan], :PRTR => [:bruderer])
37
+ # end
38
+
39
+ # describe 'hashify' do
40
+ # it 'should turn an empty list into an empty hash' do
41
+ # @similarity.send(:hashify, []).should == {}
42
+ # end
43
+ # it 'should turn the list into an unordered similarity' do
44
+ # @similarity.send(:hashify, [:meier, :maier]).should == { :MR => [:meier, :maier] }
45
+ # end
46
+ # it 'should turn the list into a encoded hash' do
47
+ # @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :MR => [:meier, :maier], :PTR => [:peter] }
48
+ # end
49
+ # end
50
+ #
51
+ # context 'integration' do
52
+ # it 'should return the right ordered array' do
53
+ # index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
+ # code = @similarity.encoded :maier
55
+ #
56
+ # index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
+ # end
58
+ # end
59
59
 
60
60
  end
@@ -13,48 +13,48 @@ describe Picky::Generators::Similarity::Metaphone do
13
13
  @similarity.encoded(text).should == expected
14
14
  end
15
15
  end
16
- def self.it_should_generate_from index, expected
17
- it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
- @similarity.generate_from(index).should == expected
19
- end
20
- end
16
+ # def self.it_should_generate_from index, expected
17
+ # it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
+ # @similarity.generate_from(index).should == expected
19
+ # end
20
+ # end
21
21
 
22
22
  it_should_encode :meier, :MR
23
23
  it_should_encode :grossberger, :KRSBRJR
24
24
  it_should_encode :hadelbla, :HTLBL
25
25
 
26
- it_should_generate_from({}, {})
27
- it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier, :meier]) # should be correctly ordered
28
- it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :MR => [:maier, :meier], :HLBL => [:hallaballa])
29
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan, :susanne], :BRTRR => [:bruderer])
30
-
31
- describe 'with reduced amount' do
32
- before(:each) do
33
- @similarity = described_class.new(1)
34
- end
35
- it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier])
36
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan], :BRTRR => [:bruderer])
37
- end
38
-
39
- describe 'hashify' do
40
- it 'should turn an empty list into an empty hash' do
41
- @similarity.send(:hashify, []).should == {}
42
- end
43
- it 'should turn the list into an unordered similarity' do
44
- @similarity.send(:hashify, [:meier, :maier]).should == { :MR => [:meier, :maier] }
45
- end
46
- it 'should turn the list into a encoded hash' do
47
- @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :MR => [:meier, :maier], :PTR => [:peter] }
48
- end
49
- end
50
-
51
- context 'integration' do
52
- it 'should return the right ordered array' do
53
- index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
- code = @similarity.encoded :maier
55
-
56
- index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
- end
58
- end
26
+ # it_should_generate_from({}, {})
27
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier, :meier]) # should be correctly ordered
28
+ # it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :MR => [:maier, :meier], :HLBL => [:hallaballa])
29
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan, :susanne], :BRTRR => [:bruderer])
30
+
31
+ # describe 'with reduced amount' do
32
+ # before(:each) do
33
+ # @similarity = described_class.new(1)
34
+ # end
35
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier])
36
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan], :BRTRR => [:bruderer])
37
+ # end
38
+ #
39
+ # describe 'hashify' do
40
+ # it 'should turn an empty list into an empty hash' do
41
+ # @similarity.send(:hashify, []).should == {}
42
+ # end
43
+ # it 'should turn the list into an unordered similarity' do
44
+ # @similarity.send(:hashify, [:meier, :maier]).should == { :MR => [:meier, :maier] }
45
+ # end
46
+ # it 'should turn the list into a encoded hash' do
47
+ # @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :MR => [:meier, :maier], :PTR => [:peter] }
48
+ # end
49
+ # end
50
+ #
51
+ # context 'integration' do
52
+ # it 'should return the right ordered array' do
53
+ # index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
+ # code = @similarity.encoded :maier
55
+ #
56
+ # index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
+ # end
58
+ # end
59
59
 
60
60
  end
@@ -13,48 +13,48 @@ describe Picky::Generators::Similarity::Soundex do
13
13
  @similarity.encoded(text).should == expected
14
14
  end
15
15
  end
16
- def self.it_should_generate_from index, expected
17
- it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
- @similarity.generate_from(index).should == expected
19
- end
20
- end
16
+ # def self.it_should_generate_from index, expected
17
+ # it "should generate #{expected.inspect} correctly from #{index.inspect}" do
18
+ # @similarity.generate_from(index).should == expected
19
+ # end
20
+ # end
21
21
 
22
22
  it_should_encode :meier, :M600
23
23
  it_should_encode :grossberger, :G621
24
24
  it_should_encode :hadelbla, :H341
25
25
 
26
- it_should_generate_from({}, {})
27
- it_should_generate_from({ :maier => nil, :meier => nil }, :M600 => [:maier, :meier]) # should be correctly ordered
28
- it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :M600 => [:maier, :meier], :H414 => [:hallaballa])
29
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :S250 => [:susan, :susanne], :B636 => [:bruderer])
30
-
31
- describe 'with reduced amount' do
32
- before(:each) do
33
- @similarity = described_class.new(1)
34
- end
35
- it_should_generate_from({ :maier => nil, :meier => nil }, :M600 => [:maier])
36
- it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :S250 => [:susan], :B636 => [:bruderer])
37
- end
38
-
39
- describe 'hashify' do
40
- it 'should turn an empty list into an empty hash' do
41
- @similarity.send(:hashify, []).should == {}
42
- end
43
- it 'should turn the list into an unordered similarity' do
44
- @similarity.send(:hashify, [:meier, :maier]).should == { :M600 => [:meier, :maier] }
45
- end
46
- it 'should turn the list into a encoded hash' do
47
- @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :M600 => [:meier, :maier], :P360 => [:peter] }
48
- end
49
- end
50
-
51
- context 'integration' do
52
- it 'should return the right ordered array' do
53
- index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
- code = @similarity.encoded :maier
55
-
56
- index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
- end
58
- end
26
+ # it_should_generate_from({}, {})
27
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :M600 => [:maier, :meier]) # should be correctly ordered
28
+ # it_should_generate_from({ :maier => nil, :meier => nil, :hallaballa => nil }, :M600 => [:maier, :meier], :H414 => [:hallaballa])
29
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :S250 => [:susan, :susanne], :B636 => [:bruderer])
30
+
31
+ # describe 'with reduced amount' do
32
+ # before(:each) do
33
+ # @similarity = described_class.new(1)
34
+ # end
35
+ # it_should_generate_from({ :maier => nil, :meier => nil }, :M600 => [:maier])
36
+ # it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :S250 => [:susan], :B636 => [:bruderer])
37
+ # end
38
+
39
+ # describe 'hashify' do
40
+ # it 'should turn an empty list into an empty hash' do
41
+ # @similarity.send(:hashify, []).should == {}
42
+ # end
43
+ # it 'should turn the list into an unordered similarity' do
44
+ # @similarity.send(:hashify, [:meier, :maier]).should == { :M600 => [:meier, :maier] }
45
+ # end
46
+ # it 'should turn the list into a encoded hash' do
47
+ # @similarity.send(:hashify, [:meier, :maier, :peter]).should == { :M600 => [:meier, :maier], :P360 => [:peter] }
48
+ # end
49
+ # end
50
+
51
+ # context 'integration' do
52
+ # it 'should return the right ordered array' do
53
+ # index = @similarity.generate_from :meier => nil, :maier => nil, :mairai => nil, :mair => nil, :meira => nil
54
+ # code = @similarity.encoded :maier
55
+ #
56
+ # index[code].should == [:mair, :maier, :meier, :meira, :mairai]
57
+ # end
58
+ # end
59
59
 
60
60
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Picky::Generators::Weights::Constant do
4
+
5
+ context 'default weight' do
6
+ let(:constant) { described_class.new }
7
+
8
+ describe '[]' do
9
+ it 'is always 0.0' do
10
+ constant[:whatevs].should == 0.0
11
+ end
12
+ end
13
+
14
+ describe 'weight_for' do
15
+ it 'is 0.0' do
16
+ constant.weight_for(1234).should == 0.0
17
+ end
18
+ end
19
+ end
20
+
21
+ context 'defined weight' do
22
+ let(:constant) { described_class.new 3.14 }
23
+
24
+ describe '[]' do
25
+ it 'is always the defined weight' do
26
+ constant[:whatevs].should == 3.14
27
+ end
28
+ end
29
+
30
+ describe 'weight_for' do
31
+ it 'is always the defined weight' do
32
+ constant.weight_for(1234).should == 3.14
33
+ end
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Picky::Generators::Weights::Dynamic do
4
+
5
+ context 'defined block' do
6
+ let(:constant) { described_class.new { |str_or_sym| str_or_sym.size } }
7
+
8
+ describe '[]' do
9
+ it 'is the length of the given string' do
10
+ constant[''].should == 0
11
+ end
12
+ it 'is the length of the given string' do
13
+ constant['whatevs'].should == 7
14
+ end
15
+ it 'is the length of the given symbol' do
16
+ constant[:whatever].should == 8
17
+ end
18
+ end
19
+
20
+ describe 'weight_for' do
21
+ it 'is nil' do
22
+ constant.weight_for(1234).should == nil
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -2,28 +2,23 @@ require 'spec_helper'
2
2
 
3
3
  describe Picky::Generators::Weights::Logarithmic do
4
4
 
5
- before(:each) do
6
- @cacher = described_class.new
7
- end
5
+ let(:logarithmic) { described_class.new }
8
6
 
9
- describe 'generate_from' do
10
- it 'should not fail on empties' do
11
- @cacher.generate_from({ :key => [] }).should == { :key => 0 }
12
- end
13
- it 'should round to 2' do
14
- @cacher.generate_from({ :key => [1,2,3,4] }).should == { :key => 1.39 }
7
+ describe 'saved?' do
8
+ it 'is correct' do
9
+ logarithmic.saved?.should == true
15
10
  end
16
11
  end
17
12
 
18
13
  describe 'weight_for' do
19
- it 'should be 0 for 0' do
20
- @cacher.weight_for(0).should == 0
14
+ it 'is 0 for 0' do
15
+ logarithmic.weight_for(0).should == 0
21
16
  end
22
- it 'should be 0 for 1' do
23
- @cacher.weight_for(1).should == 0
17
+ it 'is 0 for 1' do
18
+ logarithmic.weight_for(1).should == 0
24
19
  end
25
- it 'should be log(x) for x' do
26
- @cacher.weight_for(1234).should == Math.log(1234)
20
+ it 'is log(x) for x' do
21
+ logarithmic.weight_for(1234).should == Math.log(1234)
27
22
  end
28
23
  end
29
24
 
@@ -6,7 +6,7 @@ describe Picky::Bundle do
6
6
  @index = Picky::Index.new :some_index
7
7
  @category = Picky::Category.new :some_category, @index
8
8
 
9
- @weights = stub :weights
9
+ @weights = stub :weights, :saved? => true
10
10
  @partial = stub :partial
11
11
  @similarity = stub :similarity
12
12
  @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, @partial, @similarity
@@ -158,7 +158,8 @@ describe Picky::Bundle do
158
158
  @index = Picky::Index.new :some_index
159
159
  @category = Picky::Category.new :some_category, @index
160
160
 
161
- @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, :weights, :partial, :similarity
161
+ @weights = stub :weights, :saved? => true
162
+ @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, :partial, :similarity
162
163
  end
163
164
  it 'should initialize the index correctly' do
164
165
  @bundle.backend_inverted.should be_kind_of(Picky::Backends::Memory::JSON)
@@ -9,27 +9,27 @@ describe Picky::Wrappers::Bundle::Calculation do
9
9
 
10
10
  describe 'ids' do
11
11
  it 'calls bundle#ids correctly' do
12
- @bundle.should_receive(:ids).once.with :'0.0'
12
+ @bundle.should_receive(:ids).once.with '0.0'
13
13
 
14
- @calculation.ids :some_sym
14
+ @calculation.ids 'some_str'
15
15
  end
16
16
  it 'calls bundle#ids correctly' do
17
- @bundle.should_receive(:ids).once.with :'6.28'
17
+ @bundle.should_receive(:ids).once.with '6.28'
18
18
 
19
- @calculation.ids :'6.28'
19
+ @calculation.ids '6.28'
20
20
  end
21
21
  end
22
22
 
23
23
  describe 'weight' do
24
24
  it 'calls bundle#ids correctly' do
25
- @bundle.should_receive(:weight).once.with :'0.0'
25
+ @bundle.should_receive(:weight).once.with '0.0'
26
26
 
27
- @calculation.weight :some_sym
27
+ @calculation.weight 'some_str'
28
28
  end
29
29
  it 'calls bundle#ids correctly' do
30
- @bundle.should_receive(:weight).once.with :'6.28'
30
+ @bundle.should_receive(:weight).once.with '6.28'
31
31
 
32
- @calculation.weight :'6.28'
32
+ @calculation.weight '6.28'
33
33
  end
34
34
  end
35
35
 
@@ -5,9 +5,10 @@ describe Picky::Bundle do
5
5
  before(:each) do
6
6
  @index = Picky::Index.new :some_index
7
7
  @category = Picky::Category.new :some_category, @index
8
+ @weights = Picky::Weights::Logarithmic.new
8
9
  @similarity = Picky::Similarity::DoubleMetaphone.new 3
9
10
  end
10
- let(:bundle) { described_class.new :some_name, @category, Picky::Backends::Memory.new, :some_weights, :some_partial, @similarity }
11
+ let(:bundle) { described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, :some_partial, @similarity }
11
12
 
12
13
  describe 'identifier' do
13
14
  it 'is correct' do
@@ -17,13 +18,14 @@ describe Picky::Bundle do
17
18
 
18
19
  describe 'similar' do
19
20
  before(:each) do
20
- bundle.similarity = @similarity.generate_from( :dragon => [1,2,3], :dargon => [4,5,6] )
21
+ bundle.add_similarity :dragon
22
+ bundle.add_similarity :dargon
21
23
  end
22
24
  it 'returns the right similars (not itself)' do
23
25
  bundle.similar(:dragon).should == [:dargon]
24
26
  end
25
27
  it 'returns the right similars' do
26
- bundle.similar(:trkn).should == [:dragon, :dargon]
28
+ bundle.similar(:trkn).should == [:dargon, :dragon]
27
29
  end
28
30
  it 'performs' do
29
31
  performance_of { bundle.similar(:dragon) }.should < 0.000075
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ #
3
+ require 'spec_helper'
4
+
5
+ describe "Weights" do
6
+
7
+ # This tests the weights option.
8
+ #
9
+ context 'various cases' do
10
+ it 'stopwords destroy ids (final: id reference on attribute)' do
11
+ index = Picky::Index.new :dynamic_weights do
12
+ source { [] }
13
+ category :text1, weights: Picky::Weights::Constant.new
14
+ category :text2, weights: Picky::Weights::Constant.new(3.14)
15
+ category :text3, weights: Picky::Weights::Dynamic.new { |str_or_sym| str_or_sym.size }
16
+ category :text4 # Default
17
+ end
18
+
19
+ require 'ostruct'
20
+
21
+ thing = OpenStruct.new id: 1, text1: "ohai", text2: "hello", text3: "world", text4: "kthxbye"
22
+ other = OpenStruct.new id: 2, text1: "", text2: "", text3: "", text4: "kthxbye"
23
+
24
+ index.add thing
25
+ index.add other
26
+
27
+ try = Picky::Search.new index
28
+
29
+ try.search("text1:ohai").allocations.first.score.should == 0.0
30
+ try.search("text2:hello").allocations.first.score.should == 3.14
31
+ try.search("text3:world").allocations.first.score.should == 5
32
+ try.search("text4:kthxbye").allocations.first.score.should == 0.6931471805599453
33
+
34
+ try_with_boosts = Picky::Search.new index do
35
+ boost [:text1] => +7.65,
36
+ [:text2] => +1.86
37
+ end
38
+
39
+ try_with_boosts.search("text1:ohai").allocations.first.score.should == 7.65
40
+ try_with_boosts.search("text2:hello").allocations.first.score.should == 5.00
41
+ end
42
+ end
43
+
44
+ end