picky 4.8.0 → 4.8.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.
@@ -9,6 +9,7 @@ module Picky
9
9
  attr_reader :name,
10
10
  :prepared,
11
11
  :backend
12
+ attr_writer :source
12
13
 
13
14
  # Parameters:
14
15
  # * name: Category name to use as identifier and file names.
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ #
3
+ require 'spec_helper'
4
+
5
+ describe "Realtime Indexing" do
6
+
7
+ Book = Struct.new(:id, :title, :author)
8
+
9
+ context 'default index' do
10
+ let(:index) do
11
+ Picky::Index.new(:books) do
12
+ category :title
13
+ category :author, similarity: Picky::Generators::Similarity::DoubleMetaphone.new(3)
14
+ end
15
+ end
16
+ let(:books) { Picky::Search.new index }
17
+
18
+ before(:each) do
19
+ index.add Book.new(1, "Title", "Author")
20
+ end
21
+
22
+ context 'dumping and loading' do
23
+ it "doesn't find books anymore after dumping and loading and updating" do
24
+ index.replace Book.new(2, "Title New", "Author New")
25
+
26
+ books.search("title").ids.should == [2, 1]
27
+
28
+ index.dump
29
+ index.load
30
+ index.build_realtime_mapping
31
+
32
+ index.replace Book.new(2, "Blah New", "Author New")
33
+
34
+ books.search("title").ids.should == [1]
35
+ end
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ #
3
+ require 'spec_helper'
4
+
5
+ require 'ostruct'
6
+
7
+ describe "special sorting" do
8
+
9
+ before(:each) do
10
+ Picky::Indexes.clear_indexes
11
+ end
12
+
13
+ it 'returns exact results first' do
14
+ data = Picky::Index.new :sorted do
15
+ category :first, partial: Picky::Partial::Substring.new(from: 1)
16
+ category :last, partial: Picky::Partial::Substring.new(from: 1)
17
+ end
18
+
19
+ SortedThing = Struct.new :id, :first, :last
20
+
21
+ things = []
22
+ things << SortedThing.new(1, 'Abracadabra', 'Mirgel')
23
+ things << SortedThing.new(2, 'Abraham', 'Minder')
24
+ things << SortedThing.new(3, 'Azzie', 'Mueller')
25
+
26
+ sorted_by_first = things.sort_by &:first
27
+ sorted_by_last = things.sort_by &:last
28
+
29
+ # We give each index a differently sorted source.
30
+ #
31
+ data[:first].source = sorted_by_first
32
+ data[:last].source = sorted_by_last
33
+
34
+ data.index
35
+
36
+ try = Picky::Search.new data
37
+
38
+ # The category in which more results
39
+ # are found determines the sort order.
40
+ #
41
+
42
+ # If there is the same number of results,
43
+ # the category of the last word determines
44
+ # the order.
45
+ #
46
+ try.search('a').ids.should == [1,2,3]
47
+ try.search('m').ids.should == [2,1,3]
48
+ try.search('a* m').ids.should == [2,1,3]
49
+ try.search('m* a').ids.should == [1,2,3]
50
+
51
+ # If one category has more "results",
52
+ # it is chosen for ordering.
53
+ #
54
+ try.search('m* ab').ids.should == [2,1]
55
+ try.search('ab* m').ids.should == [2,1]
56
+ try.search('mi* a').ids.should == [1,2]
57
+ try.search('a* mi').ids.should == [1,2]
58
+ end
59
+
60
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picky
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.0
4
+ version: 4.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-08 00:00:00.000000000 Z
12
+ date: 2012-10-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 4.8.0
37
+ version: 4.8.1
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 4.8.0
45
+ version: 4.8.1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: text
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -299,7 +299,9 @@ files:
299
299
  - spec/functional/only_spec.rb
300
300
  - spec/functional/realtime_spec.rb
301
301
  - spec/functional/regression_spec.rb
302
+ - spec/functional/reloading_spec.rb
302
303
  - spec/functional/remap_qualifiers_spec.rb
304
+ - spec/functional/sorting_spec.rb
303
305
  - spec/functional/speed_spec.rb
304
306
  - spec/functional/stemming_spec.rb
305
307
  - spec/functional/terminate_early_spec.rb
@@ -458,7 +460,9 @@ test_files:
458
460
  - spec/functional/only_spec.rb
459
461
  - spec/functional/realtime_spec.rb
460
462
  - spec/functional/regression_spec.rb
463
+ - spec/functional/reloading_spec.rb
461
464
  - spec/functional/remap_qualifiers_spec.rb
465
+ - spec/functional/sorting_spec.rb
462
466
  - spec/functional/speed_spec.rb
463
467
  - spec/functional/stemming_spec.rb
464
468
  - spec/functional/terminate_early_spec.rb