picky 4.0.6 → 4.0.7
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/bundle_realtime.rb +4 -1
- data/lib/picky/categories_realtime.rb +1 -0
- data/lib/picky/category_realtime.rb +20 -3
- data/lib/picky/index_realtime.rb +1 -0
- data/lib/picky/query/token.rb +16 -13
- data/lib/picky/sinatra/index_actions.rb +24 -0
- data/lib/picky/sinatra.rb +3 -0
- data/spec/lib/query/token_spec.rb +3 -1
- metadata +18 -17
@@ -82,10 +82,13 @@ module Picky
|
|
82
82
|
# Partializes the text and then adds each.
|
83
83
|
#
|
84
84
|
def add_partialized id, text, where = :unshift
|
85
|
-
|
85
|
+
partialized text do |partial_text|
|
86
86
|
add id, partial_text, where
|
87
87
|
end
|
88
88
|
end
|
89
|
+
def partialized text, &block
|
90
|
+
self.partial_strategy.each_partial text, &block
|
91
|
+
end
|
89
92
|
|
90
93
|
# Builds the realtime mapping.
|
91
94
|
#
|
@@ -15,8 +15,7 @@ module Picky
|
|
15
15
|
# given object.
|
16
16
|
#
|
17
17
|
def add object, where = :unshift
|
18
|
-
|
19
|
-
add_tokenized object.id, tokens, where
|
18
|
+
add_text object.id, object.send(from), where
|
20
19
|
end
|
21
20
|
|
22
21
|
# Removes the object's id, and then
|
@@ -26,6 +25,22 @@ module Picky
|
|
26
25
|
remove object.id
|
27
26
|
add object, where
|
28
27
|
end
|
28
|
+
|
29
|
+
# Replaces just part of the indexed data.
|
30
|
+
#
|
31
|
+
# Note: Takes a hash as opposed to the add/replace method.
|
32
|
+
#
|
33
|
+
def replace_from hash
|
34
|
+
# TODO Decide on a format.
|
35
|
+
#
|
36
|
+
return unless text = hash[from] || hash[from.to_s]
|
37
|
+
|
38
|
+
id = hash[:id] || hash['id']
|
39
|
+
id = id.send key_format
|
40
|
+
|
41
|
+
remove id
|
42
|
+
add_text id, text
|
43
|
+
end
|
29
44
|
|
30
45
|
# Add at the end.
|
31
46
|
#
|
@@ -42,7 +57,9 @@ module Picky
|
|
42
57
|
# For the given id, adds the list of
|
43
58
|
# strings to the index for the given id.
|
44
59
|
#
|
45
|
-
def
|
60
|
+
def add_text id, text, where = :unshift
|
61
|
+
# text = text.to_sym if @symbols # TODO Symbols.
|
62
|
+
tokens, _ = tokenizer.tokenize text
|
46
63
|
tokens.each { |text| add_tokenized_token id.send(key_format), text, where, false }
|
47
64
|
end
|
48
65
|
|
data/lib/picky/index_realtime.rb
CHANGED
data/lib/picky/query/token.rb
CHANGED
@@ -149,27 +149,28 @@ module Picky
|
|
149
149
|
@@split_qualifiers = ','
|
150
150
|
def qualify
|
151
151
|
@qualifiers, @text = (@text || EMPTY_STRING).split(@@split_qualifier_text, 2)
|
152
|
-
|
153
|
-
|
152
|
+
if @text.blank?
|
153
|
+
@text = @qualifiers || EMPTY_STRING
|
154
|
+
@qualifiers = nil
|
154
155
|
else
|
155
|
-
|
156
|
+
@qualifiers = @qualifiers.split @@split_qualifiers
|
156
157
|
end
|
157
|
-
# if @text.blank?
|
158
|
-
# @qualifiers = nil
|
159
|
-
# @text = @qualifiers || EMPTY_STRING
|
160
|
-
# else
|
161
|
-
# @qualifiers = @qualifiers.split @@split_qualifiers
|
162
|
-
# end
|
163
158
|
end
|
164
|
-
|
165
|
-
#
|
166
|
-
#
|
159
|
+
|
160
|
+
# Returns the qualifiers as an array.
|
161
|
+
#
|
162
|
+
# Example:
|
163
|
+
# token.qualifiers # => ['title', 'author']
|
164
|
+
# token.qualifiers # => []
|
165
|
+
#
|
166
|
+
# Note: Internally, qualifiers are nil if there are none.
|
167
167
|
#
|
168
168
|
def qualifiers
|
169
169
|
@qualifiers || []
|
170
170
|
end
|
171
171
|
|
172
|
-
#
|
172
|
+
# Returns the token in the form
|
173
|
+
# ['original:Text', 'processedtext']
|
173
174
|
#
|
174
175
|
def to_result
|
175
176
|
[@original, @text]
|
@@ -177,6 +178,8 @@ module Picky
|
|
177
178
|
|
178
179
|
# Internal identifier.
|
179
180
|
#
|
181
|
+
# Note: Used in many backends.
|
182
|
+
#
|
180
183
|
def identifier
|
181
184
|
"#{similar?? :similarity : :inverted}:#{@text}"
|
182
185
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Picky
|
2
|
+
module Sinatra
|
3
|
+
|
4
|
+
module IndexActions
|
5
|
+
|
6
|
+
def self.extended base
|
7
|
+
base.post '/' do
|
8
|
+
index_name = params[:index]
|
9
|
+
index = Picky::Indexes[index_name.to_sym]
|
10
|
+
data = params[:data]
|
11
|
+
index.replace_from data if data
|
12
|
+
end
|
13
|
+
base.delete '/' do
|
14
|
+
index_name = params[:index]
|
15
|
+
index = Picky::Indexes[index_name.to_sym]
|
16
|
+
id = params[:data][:id]
|
17
|
+
index.remove id if id
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
data/lib/picky/sinatra.rb
CHANGED
@@ -139,7 +139,9 @@ describe Picky::Query::Token do
|
|
139
139
|
describe 'qualify' do
|
140
140
|
def self.it_should_qualify text, expected_result
|
141
141
|
it "should extract the qualifier #{expected_result} from #{text}" do
|
142
|
-
described_class.new
|
142
|
+
token = described_class.new text
|
143
|
+
token.qualify
|
144
|
+
[token.instance_variable_get(:@qualifiers), token.text].should == expected_result
|
143
145
|
end
|
144
146
|
end
|
145
147
|
it_should_qualify 'spec:qualifier', [['spec'], 'qualifier']
|
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.0.
|
4
|
+
version: 4.0.7
|
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: 2012-01-
|
12
|
+
date: 2012-01-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70160585740240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70160585740240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: picky-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &70160585738100 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 4.0.
|
32
|
+
version: 4.0.7
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70160585738100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: text
|
38
|
-
requirement: &
|
38
|
+
requirement: &70160585737280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70160585737280
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yajl-ruby
|
49
|
-
requirement: &
|
49
|
+
requirement: &70160585735700 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70160585735700
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activesupport
|
60
|
-
requirement: &
|
60
|
+
requirement: &70160585734980 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '3.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70160585734980
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: procrastinate
|
71
|
-
requirement: &
|
71
|
+
requirement: &70160585749640 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0.4'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70160585749640
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rack_fast_escape
|
82
|
-
requirement: &
|
82
|
+
requirement: &70160585748580 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70160585748580
|
91
91
|
description: Fast Ruby semantic text search engine with comfortable single field interface.
|
92
92
|
email: florian.hanke+picky@gmail.com
|
93
93
|
executables:
|
@@ -214,6 +214,7 @@ files:
|
|
214
214
|
- lib/picky/results.rb
|
215
215
|
- lib/picky/scheduler.rb
|
216
216
|
- lib/picky/search.rb
|
217
|
+
- lib/picky/sinatra/index_actions.rb
|
217
218
|
- lib/picky/sinatra.rb
|
218
219
|
- lib/picky/statistics.rb
|
219
220
|
- lib/picky/tasks.rb
|