picky 3.1.9 → 3.1.10

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.
@@ -30,6 +30,12 @@ module Picky
30
30
  @mapping_file = Memory::JSON.new "#{cache_path}.file_mapping.#{extension}"
31
31
  end
32
32
 
33
+ # The initial content before loading.
34
+ #
35
+ def default
36
+ nil
37
+ end
38
+
33
39
  # The default extension for index files is "index".
34
40
  #
35
41
  def extension
@@ -14,6 +14,12 @@ module Picky
14
14
  :json
15
15
  end
16
16
 
17
+ # The initial content before loading.
18
+ #
19
+ def default
20
+ {}
21
+ end
22
+
17
23
  # Loads the index hash from json format.
18
24
  #
19
25
  def load
@@ -14,6 +14,12 @@ module Picky
14
14
  :dump
15
15
  end
16
16
 
17
+ # The initial content before loading.
18
+ #
19
+ def default
20
+ {}
21
+ end
22
+
17
23
  # Loads the index hash from marshal format.
18
24
  #
19
25
  def load
@@ -16,6 +16,12 @@ module Picky
16
16
  :txt
17
17
  end
18
18
 
19
+ # The initial content before loading.
20
+ #
21
+ def default
22
+ raise "Can't have a default content from text file. Use JSON or Marshal."
23
+ end
24
+
19
25
  # Text files are used exclusively for
20
26
  # prepared data files.
21
27
  #
@@ -23,6 +23,12 @@ module Picky
23
23
  @namespace = namespace
24
24
  end
25
25
 
26
+ # The initial content before loading.
27
+ #
28
+ def default
29
+ nil
30
+ end
31
+
26
32
  # Returns itself.
27
33
  #
28
34
  def load
data/lib/picky/bundle.rb CHANGED
@@ -36,14 +36,18 @@ module Picky
36
36
  :backend_similarity,
37
37
  :backend_configuration,
38
38
 
39
+ :weights_strategy,
40
+ :partial_strategy,
39
41
  :similarity_strategy
40
42
 
41
43
  delegate :[], :[]=, :to => :configuration
42
44
  delegate :index_directory, :to => :category
43
45
 
44
- def initialize name, category, backend, similarity_strategy, options = {}
46
+ def initialize name, category, backend, weights_strategy, partial_strategy, similarity_strategy, options = {}
45
47
  @name = name
46
48
  @category = category
49
+ @weights_strategy = weights_strategy
50
+ @partial_strategy = partial_strategy
47
51
  @similarity_strategy = similarity_strategy
48
52
 
49
53
  # Extract specific indexes from backend.
@@ -0,0 +1,27 @@
1
+ module Picky
2
+
3
+ class Categories
4
+
5
+ each_delegate :remove,
6
+ :to => :categories
7
+
8
+ # TODO Rewrite indexing/tokenizer/caching etc.
9
+ #
10
+ def add object
11
+ id = object.id
12
+ categories.each do |category|
13
+ tokens, _ = category.tokenizer.tokenize object.send(category.from).to_s
14
+ category.add id, tokens
15
+ end
16
+ end
17
+
18
+ # TODO
19
+ #
20
+ def replace object
21
+ remove object.id
22
+ add object
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -35,16 +35,19 @@ module Picky
35
35
  partial = options[:partial] || Generators::Partial::Default
36
36
  similarity = options[:similarity] || Generators::Similarity::Default
37
37
 
38
- @indexing_exact = Indexing::Bundle.new :exact, self, index.backend, weights, Generators::Partial::None.new, similarity, options
39
- @indexing_partial = Indexing::Bundle.new :partial, self, index.backend, weights, partial, Generators::Similarity::None.new, options
38
+ no_partial = Generators::Partial::None.new
39
+ no_similarity = Generators::Similarity::None.new
40
+
41
+ @indexing_exact = Indexing::Bundle.new :exact, self, index.backend, weights, no_partial, similarity, options
42
+ @indexing_partial = Indexing::Bundle.new :partial, self, index.backend, weights, partial, no_similarity, options
40
43
 
41
44
  # Indexed.
42
45
  #
43
- @indexed_exact = Indexed::Bundle.new :exact, self, index.backend, similarity
46
+ @indexed_exact = Indexed::Bundle.new :exact, self, index.backend, weights, no_partial, similarity
44
47
  if partial.use_exact_for_partial?
45
48
  @indexed_partial = @indexed_exact
46
49
  else
47
- @indexed_partial = Indexed::Bundle.new :partial, self, index.backend, similarity
50
+ @indexed_partial = Indexed::Bundle.new :partial, self, index.backend, weights, partial, no_similarity
48
51
  end
49
52
 
50
53
  # @exact = exact_lambda.call(@exact, @partial) if exact_lambda = options[:exact_lambda]
@@ -0,0 +1,32 @@
1
+ module Picky
2
+
3
+ # TODO
4
+ #
5
+ class Category
6
+
7
+ # TODO
8
+ #
9
+ def remove id
10
+ indexed_exact.remove id
11
+ indexed_partial.remove id
12
+ end
13
+
14
+ # TODO
15
+ #
16
+ def add id, tokens
17
+ tokens.each do |text|
18
+ next unless text
19
+ text = text.to_sym
20
+ indexed_exact.add id, text
21
+
22
+ # TODO Beautify.
23
+ #
24
+ indexed_partial.partial_strategy.each_partial text do |partial_text|
25
+ indexed_partial.add id, partial_text
26
+ end
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -35,6 +35,12 @@ module Picky
35
35
  @max = options[:max] || -1
36
36
  end
37
37
 
38
+ # Yields each generated partial.
39
+ #
40
+ def each_partial token, &block
41
+ token.each_intoken min, max, &block
42
+ end
43
+
38
44
  # Generates a partial index from the given inverted index.
39
45
  #
40
46
  def generate_from inverted
@@ -64,25 +70,23 @@ module Picky
64
70
  result
65
71
  end
66
72
 
67
- private
68
-
69
- # To each shortened token of :test
70
- # :test, :tes, :te, :t
71
- # add all ids of :test
72
- #
73
- # "token" here means just text.
74
- #
75
- # THINK Could be improved by appending the aforegoing ids?
76
- #
77
- def generate_for token, inverted, result
78
- token.each_intoken(min, max) do |intoken|
79
- if result[intoken]
80
- result[intoken] += inverted[token] # unique
81
- else
82
- result[intoken] = inverted[token].dup
83
- end
73
+ # To each shortened token of :test
74
+ # :test, :tes, :te, :t
75
+ # add all ids of :test
76
+ #
77
+ # "token" here means just text.
78
+ #
79
+ # THINK Could be improved by appending the aforegoing ids?
80
+ #
81
+ def generate_for token, inverted, result
82
+ each_partial token do |intoken|
83
+ if result[intoken]
84
+ result[intoken] += inverted[token] # unique
85
+ else
86
+ result[intoken] = inverted[token].dup
84
87
  end
85
88
  end
89
+ end
86
90
 
87
91
  end
88
92
 
@@ -8,6 +8,12 @@ module Picky
8
8
  #
9
9
  class None < Strategy
10
10
 
11
+ # Yields each generated partial.
12
+ #
13
+ def each_partial token
14
+ # yields nothing
15
+ end
16
+
11
17
  # Returns an empty index.
12
18
  #
13
19
  def generate_from index
@@ -66,6 +66,12 @@ module Picky
66
66
  @generator.to
67
67
  end
68
68
 
69
+ # Yields each generated partial.
70
+ #
71
+ def each_partial token, &block
72
+ @generator.each_subtoken token, &block
73
+ end
74
+
69
75
  # Generates a partial index from the given inverted index.
70
76
  #
71
77
  def generate_from inverted
@@ -95,25 +101,23 @@ module Picky
95
101
  result
96
102
  end
97
103
 
98
- private
99
-
100
- # To each shortened token of :test
101
- # :test, :tes, :te, :t
102
- # add all ids of :test
103
- #
104
- # "token" here means just text.
105
- #
106
- # THINK Could be improved by appending the aforegoing ids?
107
- #
108
- def generate_for token, inverted, result
109
- @generator.each_subtoken(token) do |subtoken|
110
- if result[subtoken]
111
- result[subtoken] += inverted[token] # unique
112
- else
113
- result[subtoken] = inverted[token].dup
114
- end
104
+ # To each shortened token of :test
105
+ # :test, :tes, :te, :t
106
+ # add all ids of :test
107
+ #
108
+ # "token" here means just text.
109
+ #
110
+ # THINK Could be improved by appending the aforegoing ids?
111
+ #
112
+ def generate_for token, inverted, result
113
+ each_partial token do |subtoken|
114
+ if result[subtoken]
115
+ result[subtoken] += inverted[token] # unique
116
+ else
117
+ result[subtoken] = inverted[token].dup
115
118
  end
116
119
  end
120
+ end
117
121
 
118
122
  end
119
123
 
@@ -0,0 +1,16 @@
1
+ module Picky
2
+
3
+ #
4
+ #
5
+ class Index
6
+
7
+ # TODO Rake troubles?
8
+ #
9
+ delegate :remove,
10
+ :add,
11
+ :replace,
12
+ :to => :categories
13
+
14
+ end
15
+
16
+ end
@@ -18,6 +18,19 @@ module Picky
18
18
  #
19
19
  class Bundle < Picky::Bundle
20
20
 
21
+ attr_reader :realtime_mapping
22
+
23
+ def initialize name, category, backend, weights_strategy, partial_strategy, similarity_strategy, options = {}
24
+ super name, category, backend, weights_strategy, partial_strategy, similarity_strategy, options
25
+
26
+ @inverted = @backend_inverted.default
27
+ @weights = @backend_weights.default
28
+ @similarity = @backend_similarity.default
29
+ @configuration = @backend_configuration.default
30
+
31
+ @realtime_mapping = {} # id -> ary of syms. TODO Always instantiate?
32
+ end
33
+
21
34
  # Get the ids for the given symbol.
22
35
  #
23
36
  # Returns a (potentially empty) array of ids.
@@ -0,0 +1,55 @@
1
+ module Picky
2
+
3
+ module Indexed # :nodoc:all
4
+
5
+ class Bundle < Picky::Bundle
6
+
7
+ # Removes the given id from the indexes.
8
+ #
9
+ def remove id
10
+ # Is it anywhere?
11
+ #
12
+ syms = @realtime_mapping[id]
13
+ return unless syms
14
+
15
+ syms.each do |sym|
16
+ ids = @inverted[sym]
17
+ ids.delete id
18
+
19
+ if ids.empty?
20
+ @inverted.delete sym
21
+ @weights.delete sym
22
+ else
23
+ @weights[sym] = self.weights_strategy.weight_for ids.size
24
+ end
25
+ end
26
+
27
+ @realtime_mapping.delete id
28
+ end
29
+
30
+ # Returns a reference to the array where the id has been added.
31
+ #
32
+ def add id, sym
33
+ ary = @inverted[sym]
34
+
35
+ syms = @realtime_mapping[id]
36
+ syms = (@realtime_mapping[id] = []) unless syms # TODO Nicefy.
37
+
38
+ ids = if syms.include? sym
39
+ ids = @inverted[sym]
40
+ ids.delete id # Move id
41
+ ids.unshift id # to front
42
+ else
43
+ syms << sym
44
+ inverted = @inverted[sym] ||= []
45
+ inverted.unshift id
46
+ end
47
+
48
+ @weights[sym] = self.weights_strategy.weight_for ids.size
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -33,18 +33,13 @@ module Picky
33
33
  attr_reader :backend,
34
34
  :prepared
35
35
 
36
- attr_accessor :partial_strategy,
37
- :weights_strategy
38
-
39
36
  # When indexing, clear only clears the inverted index.
40
37
  #
41
38
  delegate :clear, :to => :inverted
42
39
 
43
40
  def initialize name, category, backend, weights_strategy, partial_strategy, similarity_strategy, options = {}
44
- super name, category, backend, similarity_strategy, options
41
+ super name, category, backend, weights_strategy, partial_strategy, similarity_strategy, options
45
42
 
46
- @weights_strategy = weights_strategy
47
- @partial_strategy = partial_strategy
48
43
  @key_format = options[:key_format]
49
44
  @prepared = Backends::Memory::Text.new category.prepared_index_path
50
45
 
data/lib/picky/loader.rb CHANGED
@@ -138,6 +138,7 @@ module Picky
138
138
  load_relative 'indexing/wrappers/category/location'
139
139
 
140
140
  load_relative 'indexed/bundle'
141
+ load_relative 'indexed/bundle_realtime'
141
142
  load_relative 'indexed/wrappers/exact_first'
142
143
 
143
144
  # Bundle Wrapper
@@ -211,10 +212,12 @@ module Picky
211
212
  load_relative 'category'
212
213
  load_relative 'category_indexed'
213
214
  load_relative 'category_indexing'
215
+ load_relative 'category_realtime'
214
216
 
215
217
  load_relative 'categories'
216
218
  load_relative 'categories_indexed'
217
219
  load_relative 'categories_indexing'
220
+ load_relative 'categories_realtime'
218
221
 
219
222
  load_relative 'indexes'
220
223
  load_relative 'indexes_indexed'
@@ -223,6 +226,7 @@ module Picky
223
226
  load_relative 'index'
224
227
  load_relative 'index_indexed'
225
228
  load_relative 'index_indexing'
229
+ load_relative 'index_realtime'
226
230
 
227
231
  # Results.
228
232
  #
@@ -5,9 +5,15 @@ 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
- @similarity = Picky::Similarity::DoubleMetaphone.new 3
9
8
  end
10
- let(:bundle) { described_class.new :some_name, @category, Picky::Backends::Memory.new, @similarity }
9
+ let(:bundle) do
10
+ described_class.new :some_name,
11
+ @category,
12
+ Picky::Backends::Memory.new,
13
+ Picky::Generators::Weights::Default,
14
+ Picky::Generators::Partial::Default,
15
+ Picky::Generators::Similarity::DoubleMetaphone.new(3)
16
+ end
11
17
 
12
18
  describe 'identifier' do
13
19
  it 'is correct' do
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe Picky::Indexed::Bundle do
4
+
5
+ before(:each) do
6
+ @index = Picky::Index.new :some_index
7
+ @category = Picky::Category.new :some_category, @index
8
+
9
+ @weights = Picky::Generators::Weights::Default
10
+ @partial = Picky::Generators::Partial::Default
11
+ @similarity = stub :similarity
12
+ @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, @partial, @similarity
13
+ end
14
+
15
+ it 'is by default empty' do
16
+ @bundle.realtime_mapping.should == {}
17
+ end
18
+ it 'is by default empty' do
19
+ @bundle.weights.should == {}
20
+ end
21
+ it 'is by default empty' do
22
+ @bundle.inverted.should == {}
23
+ end
24
+
25
+ describe 'combined' do
26
+ it 'works correctly' do
27
+ @bundle.add 1, :title
28
+ @bundle.add 2, :title
29
+
30
+ @bundle.realtime_mapping.should == { 1 => [:title], 2 => [:title] }
31
+ @bundle.inverted.should == { :title => [2,1] }
32
+ @bundle.weights.should == { :title => 0.6931471805599453 }
33
+ end
34
+ it 'works correctly' do
35
+ @bundle.add 1, :title
36
+ @bundle.add 2, :title
37
+ @bundle.remove 1
38
+ @bundle.remove 2
39
+
40
+ @bundle.realtime_mapping.should == {}
41
+ @bundle.weights.should == {}
42
+ @bundle.inverted.should == {}
43
+ end
44
+ it 'works correctly' do
45
+ @bundle.add 1, :title
46
+ @bundle.add 1, :other
47
+ @bundle.add 1, :whatever
48
+ @bundle.remove 1
49
+
50
+ @bundle.realtime_mapping.should == {}
51
+ @bundle.weights.should == {}
52
+ @bundle.inverted.should == {}
53
+ end
54
+ it 'works correctly' do
55
+ @bundle.add 1, :title
56
+ @bundle.add 2, :thing
57
+ @bundle.add 1, :other
58
+ @bundle.remove 1
59
+
60
+ @bundle.realtime_mapping.should == { 2 => [:thing] }
61
+ @bundle.weights.should == { :thing => 0.0 }
62
+ @bundle.inverted.should == { :thing => [2] }
63
+ end
64
+ it 'works correctly' do
65
+ @bundle.add 1, :title
66
+ @bundle.add 1, :title
67
+
68
+ @bundle.realtime_mapping.should == { 1 => [:title] }
69
+ @bundle.weights.should == { :title => 0.0 }
70
+ @bundle.inverted.should == { :title => [1] }
71
+ end
72
+ it 'works correctly' do
73
+ @bundle.add 1, :title
74
+ @bundle.remove 1
75
+ @bundle.remove 1
76
+
77
+ @bundle.realtime_mapping.should == {}
78
+ @bundle.weights.should == {}
79
+ @bundle.inverted.should == {}
80
+ end
81
+ end
82
+
83
+ describe 'add' do
84
+ it 'works correctly' do
85
+ @bundle.add 1, :title
86
+
87
+ @bundle.realtime_mapping.should == { 1 => [:title] }
88
+
89
+ @bundle.add 2, :other
90
+
91
+ @bundle.realtime_mapping.should == { 1 => [:title], 2 => [:other] }
92
+
93
+ @bundle.add 1, :thing
94
+
95
+ @bundle.realtime_mapping.should == { 1 => [:title, :thing], 2 => [:other] }
96
+ end
97
+ it 'works correctly' do
98
+ @bundle.add 1, :title
99
+
100
+ @bundle.weights.should == { :title => 0.0 }
101
+ @bundle.inverted.should == { :title => [1] }
102
+ end
103
+ end
104
+
105
+ end
@@ -6,8 +6,10 @@ describe Picky::Indexed::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
10
+ @partial = stub :partial
9
11
  @similarity = stub :similarity
10
- @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @similarity
12
+ @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, @weights, @partial, @similarity
11
13
  end
12
14
 
13
15
  describe 'to_s' do
@@ -156,7 +158,7 @@ describe Picky::Indexed::Bundle do
156
158
  @index = Picky::Index.new :some_index
157
159
  @category = Picky::Category.new :some_category, @index
158
160
 
159
- @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, :similarity
161
+ @bundle = described_class.new :some_name, @category, Picky::Backends::Memory.new, :weights, :partial, :similarity
160
162
  end
161
163
  it 'should initialize the index correctly' do
162
164
  @bundle.backend_inverted.should be_kind_of(Picky::Backends::Memory::JSON)
@@ -0,0 +1,131 @@
1
+ # encoding: utf-8
2
+ #
3
+ require 'spec_helper'
4
+
5
+ describe "Realtime Indexing" do
6
+
7
+ class Book
8
+ attr_reader :id, :title, :author
9
+ def initialize id, title, author
10
+ @id, @title, @author = id, title, author
11
+ end
12
+ end
13
+
14
+ let(:index) { Picky::Index.new(:test) { source []; category :title; category :author } }
15
+ let(:books) { Picky::Search.new index }
16
+
17
+ before(:each) do
18
+ index.add Book.new(1, "Title", "Author")
19
+ end
20
+
21
+ context 'with partial' do
22
+ it 'finds the first entry' do
23
+ books.search('Titl').ids.should == [1]
24
+ end
25
+
26
+ it 'allows removing something' do
27
+ index.remove 1
28
+ end
29
+ it 'is not findable anymore after removing' do
30
+ books.search('Titl').ids.should == [1]
31
+
32
+ index.remove 1
33
+
34
+ books.search('Titl').ids.should == []
35
+ end
36
+
37
+ it 'allows adding something' do
38
+ index.add Book.new(2, "Title2", "Author2")
39
+ end
40
+ it 'is findable after adding' do
41
+ books.search('Titl').ids.should == [1]
42
+
43
+ index.add Book.new(2, "Title New", "Author New")
44
+
45
+ books.search('Titl').ids.should == [2,1]
46
+ end
47
+
48
+ it 'allows replacing something' do
49
+ index.replace Book.new(1, "Title New", "Author New")
50
+ end
51
+ it 'is findable after replacing' do
52
+ books.search('Ne').ids.should == []
53
+
54
+ index.replace Book.new(1, "Title New", "Author New")
55
+
56
+ books.search('Ne').ids.should == [1, 1]
57
+ end
58
+ it 'handles more complex cases' do
59
+ books.search('Ne').ids.should == []
60
+
61
+ index.replace Book.new(1, "Title New", "Author New")
62
+
63
+ books.search('title:Ne').ids.should == [1]
64
+ end
65
+ it 'handles more complex cases' do
66
+ index.remove 1
67
+
68
+ books.search('Titl').ids.should == []
69
+
70
+ index.replace Book.new(1, "Title New", "Author New")
71
+
72
+ books.search('title:Ne').ids.should == [1]
73
+ end
74
+ end
75
+
76
+ context 'non-partial' do
77
+ it 'finds the first entry' do
78
+ books.search('Titl').ids.should == [1]
79
+ end
80
+
81
+ it 'allows removing something' do
82
+ index.remove 1
83
+ end
84
+ it 'is not findable anymore after removing' do
85
+ books.search('Titl').ids.should == [1]
86
+
87
+ index.remove 1
88
+
89
+ books.search('Titl').ids.should == []
90
+ end
91
+
92
+ it 'allows adding something' do
93
+ index.add Book.new(2, "Title2", "Author2")
94
+ end
95
+ it 'is findable after adding' do
96
+ books.search('Titl').ids.should == [1]
97
+
98
+ index.add Book.new(2, "Title New", "Author New")
99
+
100
+ books.search('Titl').ids.should == [2,1]
101
+ end
102
+
103
+ it 'allows replacing something' do
104
+ index.replace Book.new(1, "Title New", "Author New")
105
+ end
106
+ it 'is findable after replacing' do
107
+ books.search('Ne').ids.should == []
108
+
109
+ index.replace Book.new(1, "Title New", "Author New")
110
+
111
+ books.search('Ne').ids.should == [1, 1]
112
+ end
113
+ it 'handles more complex cases' do
114
+ books.search('Ne').ids.should == []
115
+
116
+ index.replace Book.new(1, "Title New", "Author New")
117
+
118
+ books.search('title:Ne').ids.should == [1]
119
+ end
120
+ it 'handles more complex cases' do
121
+ index.remove 1
122
+
123
+ books.search('Title"').ids.should == []
124
+
125
+ index.replace Book.new(1, "Title New", "Author New")
126
+
127
+ books.search('title:New"').ids.should == [1]
128
+ end
129
+ end
130
+
131
+ end
metadata CHANGED
@@ -1,49 +1,47 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: picky
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.1.10
4
5
  prerelease:
5
- version: 3.1.9
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Florian Hanke
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-10-12 00:00:00 +02:00
12
+ date: 2011-10-24 00:00:00.000000000 +11:00
14
13
  default_executable: picky
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: rspec
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &70166319035880 !ruby/object:Gem::Requirement
20
18
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
25
23
  type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: picky-client
29
24
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *70166319035880
26
+ - !ruby/object:Gem::Dependency
27
+ name: picky-client
28
+ requirement: &70166319034820 !ruby/object:Gem::Requirement
31
29
  none: false
32
- requirements:
33
- - - "="
34
- - !ruby/object:Gem::Version
35
- version: 3.1.9
30
+ requirements:
31
+ - - =
32
+ - !ruby/object:Gem::Version
33
+ version: 3.1.10
36
34
  type: :development
37
- version_requirements: *id002
35
+ prerelease: false
36
+ version_requirements: *70166319034820
38
37
  description: Fast Ruby semantic text search engine with comfortable single field interface.
39
38
  email: florian.hanke+picky@gmail.com
40
- executables:
39
+ executables:
41
40
  - picky
42
- extensions:
41
+ extensions:
43
42
  - lib/picky/ext/ruby19/extconf.rb
44
43
  extra_rdoc_files: []
45
-
46
- files:
44
+ files:
47
45
  - aux/picky/cli.rb
48
46
  - lib/picky/adapters/rack/base.rb
49
47
  - lib/picky/adapters/rack/live_parameters.rb
@@ -72,9 +70,11 @@ files:
72
70
  - lib/picky/categories.rb
73
71
  - lib/picky/categories_indexed.rb
74
72
  - lib/picky/categories_indexing.rb
73
+ - lib/picky/categories_realtime.rb
75
74
  - lib/picky/category.rb
76
75
  - lib/picky/category_indexed.rb
77
76
  - lib/picky/category_indexing.rb
77
+ - lib/picky/category_realtime.rb
78
78
  - lib/picky/character_substituters/west_european.rb
79
79
  - lib/picky/constants.rb
80
80
  - lib/picky/cores.rb
@@ -113,7 +113,9 @@ files:
113
113
  - lib/picky/index.rb
114
114
  - lib/picky/index_indexed.rb
115
115
  - lib/picky/index_indexing.rb
116
+ - lib/picky/index_realtime.rb
116
117
  - lib/picky/indexed/bundle.rb
118
+ - lib/picky/indexed/bundle_realtime.rb
117
119
  - lib/picky/indexed/wrappers/bundle/calculation.rb
118
120
  - lib/picky/indexed/wrappers/bundle/location.rb
119
121
  - lib/picky/indexed/wrappers/bundle/wrapper.rb
@@ -221,7 +223,8 @@ files:
221
223
  - spec/lib/index_indexed_spec.rb
222
224
  - spec/lib/index_indexing_spec.rb
223
225
  - spec/lib/index_spec.rb
224
- - spec/lib/indexed/memory_spec.rb
226
+ - spec/lib/indexed/bundle_realtime_spec.rb
227
+ - spec/lib/indexed/bundle_spec.rb
225
228
  - spec/lib/indexed/wrappers/bundle/calculation_spec.rb
226
229
  - spec/lib/indexed/wrappers/bundle/wrapper_spec.rb
227
230
  - spec/lib/indexed/wrappers/exact_first_spec.rb
@@ -263,37 +266,35 @@ files:
263
266
  - spec/lib/statistics_spec.rb
264
267
  - spec/lib/tasks/try_spec.rb
265
268
  - spec/lib/tokenizer_spec.rb
269
+ - spec/specific/realtime_spec.rb
266
270
  - spec/specific/speed_spec.rb
267
271
  - bin/picky
268
272
  has_rdoc: true
269
- homepage: http://floere.github.com/picky
273
+ homepage: http://florianhanke.com/picky
270
274
  licenses: []
271
-
272
275
  post_install_message:
273
276
  rdoc_options: []
274
-
275
- require_paths:
277
+ require_paths:
276
278
  - lib
277
- required_ruby_version: !ruby/object:Gem::Requirement
279
+ required_ruby_version: !ruby/object:Gem::Requirement
278
280
  none: false
279
- requirements:
280
- - - ">="
281
- - !ruby/object:Gem::Version
282
- version: "0"
283
- required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ! '>='
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
284
286
  none: false
285
- requirements:
286
- - - ">="
287
- - !ruby/object:Gem::Version
288
- version: "0"
287
+ requirements:
288
+ - - ! '>='
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
289
291
  requirements: []
290
-
291
292
  rubyforge_project: http://rubyforge.org/projects/picky
292
- rubygems_version: 1.5.0
293
+ rubygems_version: 1.6.2
293
294
  signing_key:
294
295
  specification_version: 3
295
- summary: "Picky: Semantic Search Engine. Clever Interface. Good Tools."
296
- test_files:
296
+ summary: ! 'Picky: Semantic Search Engine. Clever Interface. Good Tools.'
297
+ test_files:
297
298
  - spec/aux/picky/cli_spec.rb
298
299
  - spec/ext/performant_spec.rb
299
300
  - spec/lib/adapters/rack/base_spec.rb
@@ -345,7 +346,8 @@ test_files:
345
346
  - spec/lib/index_indexed_spec.rb
346
347
  - spec/lib/index_indexing_spec.rb
347
348
  - spec/lib/index_spec.rb
348
- - spec/lib/indexed/memory_spec.rb
349
+ - spec/lib/indexed/bundle_realtime_spec.rb
350
+ - spec/lib/indexed/bundle_spec.rb
349
351
  - spec/lib/indexed/wrappers/bundle/calculation_spec.rb
350
352
  - spec/lib/indexed/wrappers/bundle/wrapper_spec.rb
351
353
  - spec/lib/indexed/wrappers/exact_first_spec.rb
@@ -387,4 +389,5 @@ test_files:
387
389
  - spec/lib/statistics_spec.rb
388
390
  - spec/lib/tasks/try_spec.rb
389
391
  - spec/lib/tokenizer_spec.rb
392
+ - spec/specific/realtime_spec.rb
390
393
  - spec/specific/speed_spec.rb