picky 4.13.0 → 4.13.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.
- data/lib/picky/loader.rb +1 -2
- data/lib/picky/query/allocation.rb +0 -8
- data/lib/picky/query/allocations.rb +2 -2
- data/spec/functional/{only_allocations_spec.rb → ignore_allocations_spec.rb} +1 -1
- data/spec/functional/ignore_spec.rb +34 -65
- data/spec/functional/only_spec.rb +94 -0
- data/spec/functional/tokenizer_spec.rb +4 -0
- data/spec/lib/query/allocation_spec.rb +0 -22
- metadata +18 -52
- data/lib/picky/extensions/hash.rb +0 -11
- data/spec/lib/extensions/hash_spec.rb +0 -41
data/lib/picky/loader.rb
CHANGED
@@ -105,14 +105,6 @@ module Picky
|
|
105
105
|
def to_result
|
106
106
|
[self.result_identifier, self.score, self.count, @combinations.to_result, self.ids] if self.count && self.count > 0
|
107
107
|
end
|
108
|
-
|
109
|
-
# Json representation of this allocation.
|
110
|
-
#
|
111
|
-
# Note: Forwards to to_result.
|
112
|
-
#
|
113
|
-
def to_json options = {}
|
114
|
-
MultiJson.encode to_result, options
|
115
|
-
end
|
116
108
|
|
117
109
|
#
|
118
110
|
#
|
@@ -63,7 +63,7 @@ module Picky
|
|
63
63
|
def remove_allocations qualifiers_array = []
|
64
64
|
return if qualifiers_array.empty?
|
65
65
|
@allocations.select! do |allocation|
|
66
|
-
allocation_qualifiers = allocation.combinations.to_qualifiers
|
66
|
+
allocation_qualifiers = allocation.combinations.to_qualifiers.clustered_uniq
|
67
67
|
next(false) if qualifiers_array.any? do |qualifiers|
|
68
68
|
allocation_qualifiers == qualifiers
|
69
69
|
end
|
@@ -80,7 +80,7 @@ module Picky
|
|
80
80
|
def keep_allocations qualifiers_array = []
|
81
81
|
return if qualifiers_array.empty?
|
82
82
|
@allocations.select! do |allocation|
|
83
|
-
allocation_qualifiers = allocation.combinations.to_qualifiers
|
83
|
+
allocation_qualifiers = allocation.combinations.to_qualifiers.clustered_uniq
|
84
84
|
next(true) if qualifiers_array.any? do |qualifiers|
|
85
85
|
allocation_qualifiers == qualifiers
|
86
86
|
end
|
@@ -6,7 +6,7 @@ require 'spec_helper'
|
|
6
6
|
#
|
7
7
|
describe 'ignoring allocations/categories' do
|
8
8
|
|
9
|
-
it 'ignores categories/allocations correctly' do
|
9
|
+
it 'ignores single categories/allocations correctly' do
|
10
10
|
index = Picky::Index.new :books do
|
11
11
|
category :author
|
12
12
|
category :title
|
@@ -18,9 +18,7 @@ describe 'ignoring allocations/categories' do
|
|
18
18
|
index.add thing.new(2, 'some name', 'some title', 'some text')
|
19
19
|
|
20
20
|
try = Picky::Search.new index do
|
21
|
-
ignore
|
22
|
-
:text,
|
23
|
-
[:text, :text]
|
21
|
+
ignore :text
|
24
22
|
end
|
25
23
|
|
26
24
|
# These categories/allocations are now removed.
|
@@ -31,7 +29,7 @@ describe 'ignoring allocations/categories' do
|
|
31
29
|
[:books, 1.386, 2, [ [:title, "some", "some"]], [2, 1]],
|
32
30
|
[:books, 1.386, 2, [[:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
33
31
|
[:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"]], [2]],
|
34
|
-
|
32
|
+
[:books, 0.693, 1, [[:author, "some", "some"], ], [2]],
|
35
33
|
[:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"]], [2]],
|
36
34
|
[:books, 0.693, 1, [ [:author, "some", "some"]], [2]],
|
37
35
|
[:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]]
|
@@ -51,10 +49,10 @@ describe 'ignoring allocations/categories' do
|
|
51
49
|
|
52
50
|
try = Picky::Search.new index do
|
53
51
|
ignore [:author, :text],
|
54
|
-
[:text
|
52
|
+
[:text]
|
55
53
|
end
|
56
54
|
|
57
|
-
# These allocations are now removed.
|
55
|
+
# These categories/allocations are now removed.
|
58
56
|
#
|
59
57
|
try.search('some some').allocations.to_result.should == [
|
60
58
|
# [:books, 1.386, 2, [[:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
@@ -67,67 +65,38 @@ describe 'ignoring allocations/categories' do
|
|
67
65
|
[:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"]], [2]],
|
68
66
|
[:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]]
|
69
67
|
]
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'keeps allocations correctly' do
|
73
|
-
index = Picky::Index.new :books do
|
74
|
-
category :author
|
75
|
-
category :title
|
76
|
-
category :text
|
77
|
-
end
|
78
|
-
|
79
|
-
thing = Struct.new :id, :author, :title, :text
|
80
|
-
index.add thing.new(1, 'peter', 'some title', 'some text')
|
81
|
-
index.add thing.new(2, 'some name', 'some title', 'some text')
|
82
68
|
|
83
|
-
|
84
|
-
only [:author, :text],
|
85
|
-
[:text, :text]
|
86
|
-
end
|
87
|
-
|
88
|
-
# These allocations are now exclusively kept.
|
69
|
+
# These categories/allocations are now removed.
|
89
70
|
#
|
90
|
-
try.search('some some').allocations.to_result.should == [
|
91
|
-
[:books,
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
[:books,
|
97
|
-
|
98
|
-
|
99
|
-
# [:books,
|
71
|
+
try.search('some some some').allocations.to_result.should == [
|
72
|
+
# [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
73
|
+
[:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
74
|
+
[:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
75
|
+
[:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
76
|
+
[:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
77
|
+
[:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
78
|
+
[:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
79
|
+
[:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
80
|
+
# [:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2]],
|
81
|
+
[:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2]],
|
82
|
+
[:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], [2]],
|
83
|
+
[:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], [2]],
|
84
|
+
[:books, 1.386, 1, [[:title, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], [2]],
|
85
|
+
[:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2]],
|
86
|
+
[:books, 1.386, 1, [[:text, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], [2]],
|
87
|
+
[:books, 1.386, 1, [[:title, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []],
|
88
|
+
[:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], []],
|
89
|
+
[:books, 1.386, 1, [[:text, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []],
|
90
|
+
[:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], []],
|
91
|
+
[:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []],
|
92
|
+
[:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []],
|
93
|
+
[:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []],
|
94
|
+
[:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []],
|
95
|
+
[:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []],
|
96
|
+
[:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []],
|
97
|
+
# [:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], []],
|
98
|
+
[:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []]
|
100
99
|
]
|
101
100
|
end
|
102
101
|
|
103
|
-
it 'performs far better' do
|
104
|
-
index = Picky::Index.new :books do
|
105
|
-
category :author
|
106
|
-
category :title
|
107
|
-
category :text
|
108
|
-
end
|
109
|
-
|
110
|
-
thing = Struct.new :id, :author, :title, :text
|
111
|
-
index.add thing.new(1, 'peter', 'some title', 'some text')
|
112
|
-
index.add thing.new(2, 'some name', 'some title', 'some text')
|
113
|
-
index.add thing.new(3, 'peter', 'some title', 'some text')
|
114
|
-
index.add thing.new(4, 'some name', 'some title', 'some text')
|
115
|
-
index.add thing.new(5, 'peter', 'some title', 'some text')
|
116
|
-
index.add thing.new(6, 'some name', 'some title', 'some text')
|
117
|
-
index.add thing.new(7, 'peter', 'some title', 'some text')
|
118
|
-
index.add thing.new(8, 'some name', 'some title', 'some text')
|
119
|
-
|
120
|
-
try = Picky::Search.new index
|
121
|
-
|
122
|
-
# Reasonably fast.
|
123
|
-
#
|
124
|
-
performance_of { try.search('some some') }.should < 0.0005
|
125
|
-
|
126
|
-
try.only [:author, :text],
|
127
|
-
[:text, :text]
|
128
|
-
|
129
|
-
# Much faster.
|
130
|
-
#
|
131
|
-
performance_of { try.search('some some') }.should < 0.000175
|
132
|
-
end
|
133
102
|
end
|
@@ -3,6 +3,100 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe 'Search#only' do
|
6
|
+
|
7
|
+
it 'keeps allocations correctly' do
|
8
|
+
index = Picky::Index.new :books do
|
9
|
+
category :author
|
10
|
+
category :title
|
11
|
+
category :text
|
12
|
+
end
|
13
|
+
|
14
|
+
thing = Struct.new :id, :author, :title, :text
|
15
|
+
index.add thing.new(1, 'peter', 'some title', 'some text')
|
16
|
+
index.add thing.new(2, 'some name', 'some title', 'some text')
|
17
|
+
|
18
|
+
try = Picky::Search.new index do
|
19
|
+
only [:author, :text],
|
20
|
+
[:text]
|
21
|
+
end
|
22
|
+
|
23
|
+
# These allocations are now exclusively kept.
|
24
|
+
#
|
25
|
+
try.search('some some').allocations.to_result.should == [
|
26
|
+
[:books, 1.386, 2, [[:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
27
|
+
# [:books, 1.386, 2, [[:text, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
28
|
+
# [:books, 1.386, 2, [[:title, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
29
|
+
# [:books, 1.386, 2, [[:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
30
|
+
# [:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"]], [2]],
|
31
|
+
[:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"]], [2]],
|
32
|
+
# [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"]], [2]],
|
33
|
+
# [:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"]], [2]],
|
34
|
+
# [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"]], [2]]
|
35
|
+
]
|
36
|
+
|
37
|
+
# These allocations are now exclusively kept.
|
38
|
+
#
|
39
|
+
try.search('some some some').allocations.to_result.should == [
|
40
|
+
[:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
41
|
+
# [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
42
|
+
# [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
43
|
+
# [:books, 2.0789999999999997, 2, [[:text, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
44
|
+
# [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
45
|
+
# [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
46
|
+
# [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], [2, 1]],
|
47
|
+
# [:books, 2.0789999999999997, 2, [[:title, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], [2, 1]],
|
48
|
+
[:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:text, "some", "some"]], [2]],
|
49
|
+
# [:books, 1.386, 1, [[:text, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], [2]],
|
50
|
+
# [:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], [2]],
|
51
|
+
# [:books, 1.386, 1, [[:title, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], [2]],
|
52
|
+
# [:books, 1.386, 1, [[:title, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []],
|
53
|
+
# [:books, 1.386, 1, [[:author, "some", "some"], [:text, "some", "some"], [:title, "some", "some"]], []],
|
54
|
+
# [:books, 1.386, 1, [[:text, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []],
|
55
|
+
# [:books, 1.386, 1, [[:title, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []],
|
56
|
+
# [:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:text, "some", "some"]], []],
|
57
|
+
# [:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []],
|
58
|
+
# [:books, 1.386, 1, [[:text, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], []],
|
59
|
+
# [:books, 1.386, 1, [[:author, "some", "some"], [:title, "some", "some"], [:title, "some", "some"]], []],
|
60
|
+
# [:books, 0.693, 1, [[:text, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []],
|
61
|
+
# [:books, 0.693, 1, [[:author, "some", "some"], [:text, "some", "some"], [:author, "some", "some"]], []],
|
62
|
+
# [:books, 0.693, 1, [[:author, "some", "some"], [:title, "some", "some"], [:author, "some", "some"]], []],
|
63
|
+
# [:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:title, "some", "some"]], []],
|
64
|
+
# [:books, 0.693, 1, [[:title, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []],
|
65
|
+
[:books, 0.693, 1, [[:author, "some", "some"], [:author, "some", "some"], [:text, "some", "some"]], [2]],
|
66
|
+
# [:books, 0.0, 1, [[:author, "some", "some"], [:author, "some", "some"], [:author, "some", "some"]], []]
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'performs far better' do
|
71
|
+
index = Picky::Index.new :books do
|
72
|
+
category :author
|
73
|
+
category :title
|
74
|
+
category :text
|
75
|
+
end
|
76
|
+
|
77
|
+
thing = Struct.new :id, :author, :title, :text
|
78
|
+
index.add thing.new(1, 'peter', 'some title', 'some text')
|
79
|
+
index.add thing.new(2, 'some name', 'some title', 'some text')
|
80
|
+
index.add thing.new(3, 'peter', 'some title', 'some text')
|
81
|
+
index.add thing.new(4, 'some name', 'some title', 'some text')
|
82
|
+
index.add thing.new(5, 'peter', 'some title', 'some text')
|
83
|
+
index.add thing.new(6, 'some name', 'some title', 'some text')
|
84
|
+
index.add thing.new(7, 'peter', 'some title', 'some text')
|
85
|
+
index.add thing.new(8, 'some name', 'some title', 'some text')
|
86
|
+
|
87
|
+
try = Picky::Search.new index
|
88
|
+
|
89
|
+
# Reasonably fast.
|
90
|
+
#
|
91
|
+
performance_of { try.search('some some') }.should < 0.0005
|
92
|
+
|
93
|
+
try.only [:author, :text],
|
94
|
+
[:text, :text]
|
95
|
+
|
96
|
+
# Much faster.
|
97
|
+
#
|
98
|
+
performance_of { try.search('some some') }.should < 0.000175
|
99
|
+
end
|
6
100
|
|
7
101
|
it 'offers the option only' do
|
8
102
|
index = Picky::Index.new :only do
|
@@ -4,6 +4,10 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
describe Picky::Tokenizer do
|
6
6
|
describe 'examples' do
|
7
|
+
it 'leaves a dash alone by default' do
|
8
|
+
tokenizer = described_class.new
|
9
|
+
tokenizer.tokenize('title1-').should == [['title1-'], ['title1-']]
|
10
|
+
end
|
7
11
|
it 'works correctly' do
|
8
12
|
tokenizer = described_class.new(normalizes_words: [[/\&/, 'and']])
|
9
13
|
|
@@ -9,14 +9,6 @@ describe Picky::Query::Allocation do
|
|
9
9
|
@allocation = described_class.new @index, @combinations
|
10
10
|
end
|
11
11
|
|
12
|
-
# describe "hash" do
|
13
|
-
# it "forwards to the combinations" do
|
14
|
-
# @combinations.should_receive(:hash).once.with
|
15
|
-
#
|
16
|
-
# @allocation.hash
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
|
20
12
|
describe "to_s" do
|
21
13
|
before(:each) do
|
22
14
|
@combinations.stub! :to_result => 'combinations_result'
|
@@ -189,20 +181,6 @@ describe Picky::Query::Allocation do
|
|
189
181
|
end
|
190
182
|
end
|
191
183
|
|
192
|
-
describe 'to_json' do
|
193
|
-
before(:each) do
|
194
|
-
@allocation = described_class.new @index, stub(:combination, :empty? => false, :to_result => [:some_result1, :some_result2])
|
195
|
-
@allocation.instance_variable_set :@score, :some_score
|
196
|
-
end
|
197
|
-
it 'should output the correct json string' do
|
198
|
-
@backend.stub! :ids => [1,2,3,4,5,6,7]
|
199
|
-
|
200
|
-
@allocation.process! 20, 0
|
201
|
-
|
202
|
-
@allocation.to_json.should == '["some_result_identifier","some_score",7,["some_result1","some_result2"],[1,2,3,4,5,6,7]]'
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
184
|
describe "calculate_score" do
|
207
185
|
context 'non-empty combinations' do
|
208
186
|
it 'should forward to backend and combinations' do
|
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.13.
|
4
|
+
version: 4.13.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70248447814120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,31 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *70248447814120
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: picky-client
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70248447750680 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
36
31
|
- !ruby/object:Gem::Version
|
37
|
-
version: 4.13.
|
32
|
+
version: 4.13.1
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 4.13.0
|
35
|
+
version_requirements: *70248447750680
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: text
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70248447748820 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '0'
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
46
|
+
version_requirements: *70248447748820
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: multi_json
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70248447747100 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: '0'
|
70
55
|
type: :runtime
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
57
|
+
version_requirements: *70248447747100
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: activesupport
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70248447744720 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ! '>='
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '3.0'
|
86
66
|
type: :runtime
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '3.0'
|
68
|
+
version_requirements: *70248447744720
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: rack_fast_escape
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &70248447728420 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ! '>='
|
@@ -101,12 +76,7 @@ dependencies:
|
|
101
76
|
version: '0'
|
102
77
|
type: :runtime
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
79
|
+
version_requirements: *70248447728420
|
110
80
|
description: Fast Ruby semantic text search engine with comfortable single field interface.
|
111
81
|
email: florian.hanke+picky@gmail.com
|
112
82
|
executables:
|
@@ -169,7 +139,6 @@ files:
|
|
169
139
|
- lib/picky/constants.rb
|
170
140
|
- lib/picky/extensions/array.rb
|
171
141
|
- lib/picky/extensions/class.rb
|
172
|
-
- lib/picky/extensions/hash.rb
|
173
142
|
- lib/picky/extensions/module.rb
|
174
143
|
- lib/picky/extensions/object.rb
|
175
144
|
- lib/picky/extensions/string.rb
|
@@ -280,11 +249,11 @@ files:
|
|
280
249
|
- spec/functional/error_messages_spec.rb
|
281
250
|
- spec/functional/exact_first_spec.rb
|
282
251
|
- spec/functional/facets_spec.rb
|
252
|
+
- spec/functional/ignore_allocations_spec.rb
|
283
253
|
- spec/functional/ignore_spec.rb
|
284
254
|
- spec/functional/max_allocations_spec.rb
|
285
255
|
- spec/functional/multi_index_qualifier_spec.rb
|
286
256
|
- spec/functional/non_specific_ids_larger_than_20_spec.rb
|
287
|
-
- spec/functional/only_allocations_spec.rb
|
288
257
|
- spec/functional/only_spec.rb
|
289
258
|
- spec/functional/pool_spec.rb
|
290
259
|
- spec/functional/range_queries_spec.rb
|
@@ -338,7 +307,6 @@ files:
|
|
338
307
|
- spec/lib/character_substituters/polish_spec.rb
|
339
308
|
- spec/lib/character_substituters/west_european_spec.rb
|
340
309
|
- spec/lib/extensions/array_spec.rb
|
341
|
-
- spec/lib/extensions/hash_spec.rb
|
342
310
|
- spec/lib/extensions/module_spec.rb
|
343
311
|
- spec/lib/extensions/object_spec.rb
|
344
312
|
- spec/lib/extensions/string_spec.rb
|
@@ -427,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
427
395
|
version: '0'
|
428
396
|
requirements: []
|
429
397
|
rubyforge_project: http://rubyforge.org/projects/picky
|
430
|
-
rubygems_version: 1.8.
|
398
|
+
rubygems_version: 1.8.10
|
431
399
|
signing_key:
|
432
400
|
specification_version: 3
|
433
401
|
summary: ! 'Picky: Semantic Search Engine. Clever Interface. Good Tools.'
|
@@ -449,11 +417,11 @@ test_files:
|
|
449
417
|
- spec/functional/error_messages_spec.rb
|
450
418
|
- spec/functional/exact_first_spec.rb
|
451
419
|
- spec/functional/facets_spec.rb
|
420
|
+
- spec/functional/ignore_allocations_spec.rb
|
452
421
|
- spec/functional/ignore_spec.rb
|
453
422
|
- spec/functional/max_allocations_spec.rb
|
454
423
|
- spec/functional/multi_index_qualifier_spec.rb
|
455
424
|
- spec/functional/non_specific_ids_larger_than_20_spec.rb
|
456
|
-
- spec/functional/only_allocations_spec.rb
|
457
425
|
- spec/functional/only_spec.rb
|
458
426
|
- spec/functional/pool_spec.rb
|
459
427
|
- spec/functional/range_queries_spec.rb
|
@@ -507,7 +475,6 @@ test_files:
|
|
507
475
|
- spec/lib/character_substituters/polish_spec.rb
|
508
476
|
- spec/lib/character_substituters/west_european_spec.rb
|
509
477
|
- spec/lib/extensions/array_spec.rb
|
510
|
-
- spec/lib/extensions/hash_spec.rb
|
511
478
|
- spec/lib/extensions/module_spec.rb
|
512
479
|
- spec/lib/extensions/object_spec.rb
|
513
480
|
- spec/lib/extensions/string_spec.rb
|
@@ -575,4 +542,3 @@ test_files:
|
|
575
542
|
- spec/lib/tasks/try_spec.rb
|
576
543
|
- spec/lib/tokenizer_spec.rb
|
577
544
|
- spec/performant_spec.rb
|
578
|
-
has_rdoc:
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Hash do
|
4
|
-
|
5
|
-
describe "to_json" do
|
6
|
-
let(:obj) do
|
7
|
-
# A very realistic example.
|
8
|
-
#
|
9
|
-
{ :allocations => [
|
10
|
-
['c', 17.53, 275179, [["name","s*","s"]],[]],
|
11
|
-
['c', 15.01, 164576, [["category","s*","s"]],[]],
|
12
|
-
['p', 12.94, 415634, [["street","s*","s"]],[]],
|
13
|
-
['p', 12.89, 398247, [["name","s*","s"]],[]],
|
14
|
-
['p', 12.67, 318912, [["city","s*","s"]],[]],
|
15
|
-
['p', 12.37, 235933, [["first_name","s*","s"]],[]],
|
16
|
-
["p", 11.76, 128259, [["maiden_name","s*","s"]],[]],
|
17
|
-
['p', 11.73, 124479, [["occupation","s*","s"]],[]],
|
18
|
-
['c', 11.35, 84807, [["street","s*","s"]],[]],
|
19
|
-
['c', 11.15, 69301, [["city","s*","s"]],[]],
|
20
|
-
['p', 4.34, 77, [["street_number","s*","s"]],[]],
|
21
|
-
['c', 2.08, 8, [["street_number","s*","s"]],[]],
|
22
|
-
['c', 1.61, 5, [["adword","s*","s"]],[]]
|
23
|
-
],
|
24
|
-
:offset => 0,
|
25
|
-
:duration => 0.04,
|
26
|
-
:total => 2215417
|
27
|
-
}
|
28
|
-
end
|
29
|
-
it "should be correct" do
|
30
|
-
obj.to_json.should == '{"allocations":[["c",17.53,275179,[["name","s*","s"]],[]],["c",15.01,164576,[["category","s*","s"]],[]],["p",12.94,415634,[["street","s*","s"]],[]],["p",12.89,398247,[["name","s*","s"]],[]],["p",12.67,318912,[["city","s*","s"]],[]],["p",12.37,235933,[["first_name","s*","s"]],[]],["p",11.76,128259,[["maiden_name","s*","s"]],[]],["p",11.73,124479,[["occupation","s*","s"]],[]],["c",11.35,84807,[["street","s*","s"]],[]],["c",11.15,69301,[["city","s*","s"]],[]],["p",4.34,77,[["street_number","s*","s"]],[]],["c",2.08,8,[["street_number","s*","s"]],[]],["c",1.61,5,[["adword","s*","s"]],[]]],"offset":0,"duration":0.04,"total":2215417}'
|
31
|
-
end
|
32
|
-
it "should take options" do
|
33
|
-
lambda { obj.to_json(:some => :option) }.should_not raise_error
|
34
|
-
end
|
35
|
-
it "should be fast" do
|
36
|
-
obj.to_json # Prerun
|
37
|
-
performance_of { obj.to_json }.should < 0.000065
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|