picky 2.1.2 → 2.2.0

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 (82) hide show
  1. data/{lib → aux}/picky/cli.rb +50 -38
  2. data/bin/picky +1 -1
  3. data/lib/picky/application.rb +5 -2
  4. data/lib/picky/index/base.rb +88 -25
  5. data/lib/picky/index/memory.rb +8 -8
  6. data/lib/picky/index/redis.rb +8 -8
  7. data/lib/picky/index_bundle.rb +2 -2
  8. data/lib/picky/indexing/indexes.rb +6 -6
  9. data/lib/picky/internals/calculations/location.rb +54 -42
  10. data/lib/picky/internals/index/backend.rb +21 -21
  11. data/lib/picky/internals/index/file/text.rb +11 -11
  12. data/lib/picky/internals/index/files.rb +6 -6
  13. data/lib/picky/internals/index/redis.rb +14 -14
  14. data/lib/picky/internals/indexed/bundle/base.rb +2 -2
  15. data/lib/picky/internals/indexed/bundle/redis.rb +3 -3
  16. data/lib/picky/internals/indexed/category.rb +8 -9
  17. data/lib/picky/internals/indexed/wrappers/bundle/calculation.rb +25 -23
  18. data/lib/picky/internals/indexed/wrappers/bundle/location.rb +36 -34
  19. data/lib/picky/internals/indexed/wrappers/bundle/wrapper.rb +35 -33
  20. data/lib/picky/internals/indexed/wrappers/category/location.rb +27 -0
  21. data/lib/picky/internals/indexers/base.rb +28 -0
  22. data/lib/picky/internals/indexers/parallel.rb +64 -0
  23. data/lib/picky/internals/indexers/serial.rb +20 -29
  24. data/lib/picky/internals/indexing/bundle/base.rb +2 -2
  25. data/lib/picky/internals/indexing/bundle/super_base.rb +3 -3
  26. data/lib/picky/internals/indexing/category.rb +30 -27
  27. data/lib/picky/internals/indexing/index.rb +82 -27
  28. data/lib/picky/internals/indexing/wrappers/category/location.rb +27 -0
  29. data/lib/picky/internals/query/indexes.rb +1 -1
  30. data/lib/picky/internals/query/qualifiers.rb +7 -6
  31. data/lib/picky/internals/query/weights.rb +6 -0
  32. data/lib/picky/internals/shared/category.rb +52 -0
  33. data/lib/picky/internals/tokenizers/base.rb +1 -1
  34. data/lib/picky/internals/tokenizers/location.rb +54 -0
  35. data/lib/picky/loader.rb +16 -3
  36. data/lib/picky/no_source_specified_exception.rb +3 -0
  37. data/lib/picky/search.rb +44 -5
  38. data/lib/picky/sources/base.rb +2 -2
  39. data/lib/picky/sources/couch.rb +1 -1
  40. data/lib/picky/sources/csv.rb +1 -1
  41. data/lib/picky/sources/db.rb +9 -9
  42. data/lib/picky/sources/delicious.rb +1 -1
  43. data/lib/picky/sources/wrappers/base.rb +12 -13
  44. data/lib/picky/sources/wrappers/location.rb +24 -54
  45. data/lib/tasks/search.rake +4 -5
  46. data/lib/tasks/todo.rake +1 -1
  47. data/spec/{lib → aux/picky}/cli_spec.rb +13 -8
  48. data/spec/lib/application_spec.rb +21 -16
  49. data/spec/lib/index/base_spec.rb +74 -27
  50. data/spec/lib/index/redis_spec.rb +1 -1
  51. data/spec/lib/index_bundle_spec.rb +1 -1
  52. data/spec/lib/indexing/indexes_spec.rb +5 -5
  53. data/spec/lib/internals/calculations/location_spec.rb +14 -3
  54. data/spec/lib/internals/index/files_spec.rb +2 -3
  55. data/spec/lib/internals/index/redis_spec.rb +122 -49
  56. data/spec/lib/internals/indexed/bundle/memory_spec.rb +4 -6
  57. data/spec/lib/internals/indexed/bundle/redis_spec.rb +2 -3
  58. data/spec/lib/internals/indexed/wrappers/bundle/calculation_spec.rb +3 -3
  59. data/spec/lib/internals/indexed/wrappers/bundle/wrapper_spec.rb +3 -3
  60. data/spec/lib/internals/indexers/parallel_spec.rb +36 -0
  61. data/spec/lib/internals/indexers/serial_spec.rb +6 -14
  62. data/spec/lib/internals/indexing/bundle/memory_partial_generation_speed_spec.rb +2 -3
  63. data/spec/lib/internals/indexing/bundle/memory_spec.rb +5 -6
  64. data/spec/lib/internals/indexing/bundle/redis_spec.rb +5 -6
  65. data/spec/lib/internals/indexing/category_spec.rb +21 -6
  66. data/spec/lib/internals/indexing/index_spec.rb +43 -7
  67. data/spec/lib/query/indexes_spec.rb +1 -1
  68. data/spec/lib/search_spec.rb +51 -2
  69. data/spec/lib/sources/couch_spec.rb +6 -6
  70. data/spec/lib/sources/csv_spec.rb +4 -4
  71. data/spec/lib/sources/db_spec.rb +13 -14
  72. data/spec/lib/sources/delicious_spec.rb +3 -3
  73. data/spec/lib/sources/wrappers/base_spec.rb +9 -10
  74. data/spec/lib/sources/wrappers/location_spec.rb +11 -23
  75. metadata +14 -15
  76. data/lib/picky/auxiliary/terminal.rb +0 -219
  77. data/lib/picky/internals/configuration/index.rb +0 -67
  78. data/lib/picky/internals/indexers/no_source_specified_error.rb +0 -7
  79. data/lib/picky/internals/indexing/categories.rb +0 -46
  80. data/spec/lib/auxiliary/terminal_spec.rb +0 -150
  81. data/spec/lib/internals/configuration/index_spec.rb +0 -80
  82. data/spec/lib/internals/indexing/categories_spec.rb +0 -49
@@ -1,13 +1,13 @@
1
1
  module Internals
2
2
 
3
3
  module Index
4
-
4
+
5
5
  module File
6
-
6
+
7
7
  # Index data dumped in the text format.
8
8
  #
9
9
  class Text < Basic
10
-
10
+
11
11
  # Uses the extension "txt".
12
12
  #
13
13
  def extension
@@ -20,12 +20,12 @@ module Internals
20
20
  raise "Can't load from text file. Use JSON or Marshal."
21
21
  end
22
22
  # Text files are used exclusively for
23
- # prepared data files.
23
+ # prepared data files.
24
24
  #
25
25
  def dump hash
26
26
  raise "Can't dump to text file. Use JSON or Marshal."
27
27
  end
28
-
28
+
29
29
  # Retrieves prepared index data in the form
30
30
  # * id,data\n
31
31
  # * id,data\n
@@ -43,18 +43,18 @@ module Internals
43
43
  end
44
44
  end
45
45
  end
46
-
46
+
47
47
  #
48
48
  #
49
49
  def open_for_indexing &block
50
50
  ::File.open cache_path, 'w:binary', &block
51
51
  end
52
-
53
-
52
+
53
+
54
54
  end
55
-
55
+
56
56
  end
57
-
57
+
58
58
  end
59
-
59
+
60
60
  end
@@ -4,17 +4,17 @@ module Internals
4
4
 
5
5
  class Files < Backend
6
6
 
7
- def initialize bundle_name, config
8
- super bundle_name, config
7
+ def initialize bundle_name, category
8
+ super bundle_name, category
9
9
 
10
10
  # Note: We marshal the similarity, as the
11
11
  # Yajl json lib cannot load symbolized
12
12
  # values, just keys.
13
13
  #
14
- @index = File::JSON.new config.index_path(bundle_name, :index)
15
- @weights = File::JSON.new config.index_path(bundle_name, :weights)
16
- @similarity = File::Marshal.new config.index_path(bundle_name, :similarity)
17
- @configuration = File::JSON.new config.index_path(bundle_name, :configuration)
14
+ @index = File::JSON.new category.index_path(bundle_name, :index)
15
+ @weights = File::JSON.new category.index_path(bundle_name, :weights)
16
+ @similarity = File::Marshal.new category.index_path(bundle_name, :similarity)
17
+ @configuration = File::JSON.new category.index_path(bundle_name, :configuration)
18
18
  end
19
19
 
20
20
  def to_s
@@ -1,28 +1,28 @@
1
1
  module Internals
2
2
 
3
3
  module Index
4
-
4
+
5
5
  # TODO Needs a reconnect to be run after forking.
6
6
  #
7
7
  class Redis < Backend
8
-
9
- def initialize bundle_name, config
10
- super bundle_name, config
8
+
9
+ def initialize bundle_name, category
10
+ super bundle_name, category
11
11
 
12
12
  # Refine a few Redis "types".
13
13
  #
14
- @index = Redis::ListHash.new "#{config.identifier}:#{bundle_name}:index"
15
- @weights = Redis::StringHash.new "#{config.identifier}:#{bundle_name}:weights"
16
- @similarity = Redis::ListHash.new "#{config.identifier}:#{bundle_name}:similarity"
17
- @configuration = Redis::StringHash.new "#{config.identifier}:#{bundle_name}:configuration"
14
+ @index = Redis::ListHash.new "#{category.identifier}:#{bundle_name}:index"
15
+ @weights = Redis::StringHash.new "#{category.identifier}:#{bundle_name}:weights"
16
+ @similarity = Redis::ListHash.new "#{category.identifier}:#{bundle_name}:similarity"
17
+ @configuration = Redis::StringHash.new "#{category.identifier}:#{bundle_name}:configuration"
18
18
  end
19
-
19
+
20
20
  # Delegate to the right collection.
21
21
  #
22
22
  def ids sym
23
23
  index.collection sym
24
24
  end
25
-
25
+
26
26
  # Delegate to the right member value.
27
27
  #
28
28
  # Note: Converts to float.
@@ -30,15 +30,15 @@ module Internals
30
30
  def weight sym
31
31
  weights.member(sym).to_f
32
32
  end
33
-
33
+
34
34
  # Delegate to a member value.
35
35
  #
36
36
  def setting sym
37
37
  configuration.member sym
38
38
  end
39
-
39
+
40
40
  end
41
-
41
+
42
42
  end
43
-
43
+
44
44
  end
@@ -35,8 +35,8 @@ module Internals
35
35
  delegate :[], :to => :configuration
36
36
  delegate :size, :to => :index
37
37
 
38
- def initialize name, configuration, similarity_strategy
39
- @identifier = "#{configuration.identifier}:#{name}"
38
+ def initialize name, category, similarity_strategy
39
+ @identifier = "#{category.identifier}:#{name}"
40
40
 
41
41
  @index = {}
42
42
  @weights = {}
@@ -14,10 +14,10 @@ module Internals
14
14
  #
15
15
  class Redis < Base
16
16
 
17
- def initialize name, configuration, *args
18
- super name, configuration, *args
17
+ def initialize name, category, *args
18
+ super name, category, *args
19
19
 
20
- @backend = Internals::Index::Redis.new name, configuration
20
+ @backend = Internals::Index::Redis.new name, category
21
21
  end
22
22
 
23
23
  # Get the ids for the given symbol.
@@ -9,18 +9,17 @@ module Internals
9
9
  #
10
10
  class Category
11
11
 
12
+ include Internals::Shared::Category
13
+
12
14
  attr_accessor :exact
13
- attr_reader :identifier, :name
15
+ attr_reader :name, :index
14
16
  attr_writer :partial
15
17
 
16
18
  #
17
19
  #
18
20
  def initialize name, index, options = {}
19
- @name = name
20
-
21
- configuration = Configuration::Index.new index, self
22
-
23
- @identifier = configuration.identifier
21
+ @name = name
22
+ @index = index
24
23
 
25
24
  # TODO Push the defaults out into the index.
26
25
  #
@@ -28,15 +27,15 @@ module Internals
28
27
  similarity = options[:similarity] || Internals::Generators::Similarity::Default
29
28
 
30
29
  bundle_class = options[:indexed_bundle_class] || Bundle::Memory
31
- @exact = bundle_class.new :exact, configuration, similarity
32
- @partial = bundle_class.new :partial, configuration, similarity
30
+ @exact = bundle_class.new :exact, self, similarity
31
+ @partial = bundle_class.new :partial, self, similarity
33
32
 
34
33
  # @exact = exact_lambda.call(@exact, @partial) if exact_lambda = options[:exact_lambda]
35
34
  # @partial = partial_lambda.call(@exact, @partial) if partial_lambda = options[:partial_lambda]
36
35
 
37
36
  # TODO Extract?
38
37
  #
39
- Query::Qualifiers.add(configuration.category_name, generate_qualifiers_from(options) || [name])
38
+ Query::Qualifiers.add(name, generate_qualifiers_from(options) || [name])
40
39
  end
41
40
 
42
41
  def to_s
@@ -1,35 +1,37 @@
1
- module Indexed
2
- module Wrappers
1
+ module Internals
2
+ module Indexed
3
+ module Wrappers
3
4
 
4
- module Bundle
5
-
6
- # A calculation rewrites the symbol into a float.
7
- #
8
- # TODO I really need to allow integers as keys. The code below is just not up to the needed quality.
9
- #
10
- class Calculation < Wrapper
5
+ module Bundle
11
6
 
7
+ # A calculation rewrites the symbol into a float.
12
8
  #
9
+ # TODO I really need to allow integers as keys. The code below is just not up to the needed quality.
13
10
  #
14
- def recalculate float
15
- float
16
- end
11
+ class Calculation < Wrapper
12
+
13
+ #
14
+ #
15
+ def recalculate float
16
+ float
17
+ end
18
+
19
+ #
20
+ #
21
+ def ids sym
22
+ @bundle.ids recalculate(sym.to_s.to_f).to_s.to_sym
23
+ end
24
+
25
+ #
26
+ #
27
+ def weight sym
28
+ @bundle.weight recalculate(sym.to_s.to_f).to_s.to_sym
29
+ end
17
30
 
18
- #
19
- #
20
- def ids sym
21
- @bundle.ids recalculate(sym.to_s.to_f).to_s.to_sym
22
- end
23
-
24
- #
25
- #
26
- def weight sym
27
- @bundle.weight recalculate(sym.to_s.to_f).to_s.to_sym
28
31
  end
29
32
 
30
33
  end
31
34
 
32
35
  end
33
-
34
36
  end
35
37
  end
@@ -1,42 +1,44 @@
1
- module Indexed
2
- module Wrappers
3
-
4
- module Bundle
5
-
6
- # A location calculation recalculates a location to the Picky internal location.
7
- #
8
- class Location < Calculation
9
-
10
- def initialize bundle, options = {}
11
- super bundle
12
-
13
- precision = options[:precision] || 1
14
- user_grid = options[:grid] || raise("Gridsize needs to be given for location #{bundle.identifier}.")
15
-
16
- @calculation = Calculations::Location.new user_grid, precision
17
- end
18
-
19
- #
20
- #
21
- def recalculate float
22
- @calculation.recalculate float
23
- end
24
-
1
+ module Internals
2
+ module Indexed
3
+ module Wrappers
4
+
5
+ module Bundle
6
+
7
+ # A location calculation recalculates a location to the Picky internal location.
25
8
  #
26
- #
27
- def load
28
- # Load first the bundle, then extract the config.
9
+ class Location < Calculation
10
+
11
+ def initialize bundle, options = {}
12
+ super bundle
13
+
14
+ precision = options[:precision] || 1
15
+ user_grid = options[:grid] || raise("Gridsize needs to be given for location #{bundle.identifier}.")
16
+
17
+ @calculation = Internals::Calculations::Location.new user_grid, precision
18
+ end
19
+
20
+ #
21
+ #
22
+ def recalculate float
23
+ @calculation.recalculate float
24
+ end
25
+
29
26
  #
30
- bundle.load
31
- # TODO Move the to_f to the backend.
32
27
  #
33
- minimum = bundle[:location_minimum] && bundle[:location_minimum].to_f || raise("Configuration :location_minimum for #{bundle.identifier} missing. Did you run rake index already?")
34
- @calculation.minimum = minimum
28
+ def load
29
+ # Load first the bundle, then extract the config.
30
+ #
31
+ bundle.load
32
+ # TODO Move the to_f to the backend.
33
+ #
34
+ minimum = bundle[:location_minimum] && bundle[:location_minimum].to_f || raise("Configuration :location_minimum for #{bundle.identifier} missing. Did you run rake index already?")
35
+ @calculation.minimum = minimum
36
+ end
37
+
35
38
  end
36
-
39
+
37
40
  end
38
-
41
+
39
42
  end
40
-
41
43
  end
42
44
  end
@@ -1,43 +1,45 @@
1
- module Indexed
2
- module Wrappers
1
+ module Internals
2
+ module Indexed
3
+ module Wrappers
3
4
 
4
- # Per Bundle wrappers.
5
- #
6
- module Bundle
7
-
8
- # Base wrapper. Just delegates all methods to the bundle.
5
+ # Per Bundle wrappers.
9
6
  #
10
- class Wrapper
11
-
12
- attr_reader :bundle
7
+ module Bundle
8
+
9
+ # Base wrapper. Just delegates all methods to the bundle.
10
+ #
11
+ class Wrapper
12
+
13
+ attr_reader :bundle
14
+
15
+ def initialize bundle
16
+ @bundle = bundle
17
+ end
18
+
19
+ delegate :load,
20
+ :load_index,
21
+ :load_weights,
22
+ :load_similarity,
23
+ :load_configuration,
24
+ :clear_index,
25
+ :clear_weights,
26
+ :clear_similarity,
27
+ :clear_configuration,
28
+ :ids,
29
+ :weight,
30
+ :identifier,
31
+ :analyze,
32
+ :size,
33
+ :index,
34
+ :weights,
35
+ :similarity,
36
+ :configuration,
37
+ :to => :@bundle
13
38
 
14
- def initialize bundle
15
- @bundle = bundle
16
39
  end
17
40
 
18
- delegate :load,
19
- :load_index,
20
- :load_weights,
21
- :load_similarity,
22
- :load_configuration,
23
- :clear_index,
24
- :clear_weights,
25
- :clear_similarity,
26
- :clear_configuration,
27
- :ids,
28
- :weight,
29
- :identifier,
30
- :analyze,
31
- :size,
32
- :index,
33
- :weights,
34
- :similarity,
35
- :configuration,
36
- :to => :@bundle
37
-
38
41
  end
39
42
 
40
43
  end
41
-
42
44
  end
43
45
  end
@@ -0,0 +1,27 @@
1
+ module Internals
2
+ module Indexed
3
+ module Wrappers
4
+ module Category
5
+
6
+ module Location
7
+
8
+ def self.install_on category, grid, precision = 1
9
+ wrapped_exact = Internals::Indexed::Wrappers::Bundle::Location.new category.exact, grid: grid, precision: precision
10
+
11
+ category.class_eval do
12
+ define_method :exact do
13
+ wrapped_exact
14
+ end
15
+ define_method :partial do
16
+ wrapped_exact
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ #
3
+ module Indexers
4
+
5
+ #
6
+ #
7
+ class Base
8
+
9
+ # Selects the original id (indexed id) and a column to process. The column data is called "token".
10
+ #
11
+ # Note: Puts together the parts first in an array, then releasing the array from time to time by joining.
12
+ #
13
+ def index
14
+ indexing_message
15
+ process
16
+ end
17
+
18
+ # Delegates the key format to the source.
19
+ #
20
+ # Default is to_i.
21
+ #
22
+ def key_format
23
+ source.respond_to?(:key_format) && source.key_format || :to_i
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+ #
3
+ module Indexers
4
+
5
+ # Uses a number of categories, a source, and a tokenizer to index data.
6
+ #
7
+ # The tokenizer is taken from each category if specified, from the index, if not.
8
+ #
9
+ class Parallel < Base
10
+
11
+ delegate :categories, :source, :to => :@index
12
+
13
+ def initialize index
14
+ @index = index
15
+ end
16
+
17
+ def process
18
+ comma = ?,
19
+ newline = ?\n
20
+
21
+ # Prepare a combined object - array.
22
+ #
23
+ combined = categories.map { |category| [category, [], category.prepared_index_file, (category.tokenizer || tokenizer)] }
24
+
25
+ # Index.
26
+ #
27
+ i = 0
28
+ source.each do |object|
29
+ id = object.id
30
+
31
+ # This needs to be rewritten.
32
+ #
33
+ # Is it a good idea that not the tokenizer has control over when he gets the next text?
34
+ #
35
+ combined.each do |category, cache, _, tokenizer|
36
+ tokenizer.tokenize(object.send(category.from).to_s).each do |token_text|
37
+ next unless token_text
38
+ cache << id << comma << token_text << newline
39
+ end
40
+ end
41
+
42
+ if i >= 100_000
43
+ flush combined
44
+ i = 0
45
+ end
46
+ i += 1
47
+ end
48
+ flush combined
49
+ combined.each { |_, _, file, _| file.close }
50
+ end
51
+ def flush combined
52
+ combined.each do |_, cache, file, _|
53
+ file.write(cache.join) && cache.clear
54
+ end
55
+ end
56
+ #
57
+ #
58
+ def indexing_message
59
+ timed_exclaim %Q{"#{@index.name}": Starting parallel indexing.}
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -2,40 +2,28 @@
2
2
  #
3
3
  module Indexers
4
4
 
5
- # The indexer defines the control flow.
5
+ # Uses a category to index its data.
6
6
  #
7
- class Serial
7
+ # Note: It is called serial since it indexes each
8
+ #
9
+ # FIXME Giving the serial a category would be enough, since it already contains an index!
10
+ #
11
+ class Serial < Base
8
12
 
9
- attr_accessor :tokenizer, :source
13
+ attr_reader :category
10
14
 
11
- def initialize configuration, source, tokenizer
12
- @configuration = configuration
13
- @source = source || raise_no_source
14
- @tokenizer = tokenizer
15
- end
15
+ delegate :source, :to => :category
16
16
 
17
- # Raise a no source exception.
18
- #
19
- def raise_no_source
20
- raise NoSourceSpecifiedException.new("No source given for #{@configuration}.")
17
+ def initialize category
18
+ @category = category
21
19
  end
22
20
 
23
- # Delegates the key format to the source.
24
- #
25
- # Default is to_i.
21
+ # The tokenizer used is a cached tokenizer from the category.
26
22
  #
27
- def key_format
28
- @source.key_format || :to_i
23
+ def tokenizer
24
+ @tokenizer ||= category.tokenizer
29
25
  end
30
26
 
31
- # Selects the original id (indexed id) and a column to process. The column data is called "token".
32
- #
33
- # Note: Puts together the parts first in an array, then releasing the array from time to time by joining.
34
- #
35
- def index
36
- indexing_message
37
- process
38
- end
39
27
  def process
40
28
  comma = ?,
41
29
  newline = ?\n
@@ -52,10 +40,11 @@ module Indexers
52
40
  # end
53
41
  # end
54
42
  #
55
- @configuration.prepared_index_file do |file|
43
+ local_tokenizer = tokenizer
44
+ category.prepared_index_file do |file|
56
45
  result = []
57
- source.harvest(@configuration.index, @configuration.category) do |indexed_id, text|
58
- tokenizer.tokenize(text).each do |token_text|
46
+ source.harvest(category) do |indexed_id, text|
47
+ local_tokenizer.tokenize(text).each do |token_text|
59
48
  next unless token_text
60
49
  result << indexed_id << comma << token_text << newline
61
50
  end
@@ -64,8 +53,10 @@ module Indexers
64
53
  file.write result.join
65
54
  end
66
55
  end
56
+ #
57
+ #
67
58
  def indexing_message
68
- timed_exclaim %Q{"#{@configuration.identifier}": Starting indexing.}
59
+ timed_exclaim %Q{"#{@category.identifier}": Starting serial indexing.}
69
60
  end
70
61
 
71
62
  end
@@ -16,8 +16,8 @@ module Internals
16
16
 
17
17
  # Path is in which directory the cache is located.
18
18
  #
19
- def initialize name, configuration, similarity_strategy, partial_strategy, weights_strategy
20
- super name, configuration, similarity_strategy
19
+ def initialize name, category, similarity_strategy, partial_strategy, weights_strategy
20
+ super name, category, similarity_strategy
21
21
 
22
22
  @partial_strategy = partial_strategy
23
23
  @weights_strategy = weights_strategy
@@ -33,9 +33,9 @@ module Internals
33
33
  delegate :clear, :to => :index
34
34
  delegate :[], :[]=, :to => :configuration
35
35
 
36
- def initialize name, configuration, similarity_strategy
37
- @identifier = "#{configuration.identifier}:#{name}"
38
- @files = Internals::Index::Files.new name, configuration
36
+ def initialize name, category, similarity_strategy
37
+ @identifier = "#{category.identifier}:#{name}"
38
+ @files = Internals::Index::Files.new name, category
39
39
 
40
40
  @index = {}
41
41
  @weights = {}