picky 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. data/lib/picky/{alias_instances.rb → aliases.rb} +1 -3
  2. data/lib/picky/application.rb +18 -19
  3. data/lib/picky/cores.rb +1 -1
  4. data/lib/picky/generators/aliases.rb +3 -0
  5. data/lib/picky/index/base.rb +179 -0
  6. data/lib/picky/index/memory.rb +28 -0
  7. data/lib/picky/index/redis.rb +28 -0
  8. data/lib/picky/{indexes_api.rb → index_bundle.rb} +16 -16
  9. data/lib/picky/indexed/indexes.rb +11 -7
  10. data/lib/picky/indexing/indexes.rb +14 -8
  11. data/lib/picky/internals/adapters/rack/base.rb +27 -0
  12. data/lib/picky/internals/adapters/rack/live_parameters.rb +37 -0
  13. data/lib/picky/internals/adapters/rack/query.rb +63 -0
  14. data/lib/picky/internals/adapters/rack.rb +34 -0
  15. data/lib/picky/{calculations → internals/calculations}/location.rb +0 -0
  16. data/lib/picky/{cli.rb → internals/cli.rb} +0 -0
  17. data/lib/picky/{configuration → internals/configuration}/index.rb +8 -2
  18. data/lib/picky/{ext → internals/ext}/maybe_compile.rb +0 -0
  19. data/lib/picky/{ext → internals/ext}/ruby19/extconf.rb +0 -0
  20. data/lib/picky/{ext → internals/ext}/ruby19/performant.c +0 -0
  21. data/lib/picky/{extensions → internals/extensions}/array.rb +0 -0
  22. data/lib/picky/{extensions → internals/extensions}/hash.rb +0 -0
  23. data/lib/picky/{extensions → internals/extensions}/module.rb +0 -0
  24. data/lib/picky/{extensions → internals/extensions}/object.rb +0 -0
  25. data/lib/picky/{extensions → internals/extensions}/symbol.rb +0 -0
  26. data/lib/picky/internals/frontend_adapters/rack.rb +154 -0
  27. data/lib/picky/internals/generators/base.rb +19 -0
  28. data/lib/picky/internals/generators/partial/default.rb +7 -0
  29. data/lib/picky/internals/generators/partial/none.rb +35 -0
  30. data/lib/picky/internals/generators/partial/strategy.rb +29 -0
  31. data/lib/picky/internals/generators/partial/substring.rb +122 -0
  32. data/lib/picky/internals/generators/partial_generator.rb +19 -0
  33. data/lib/picky/internals/generators/similarity/default.rb +9 -0
  34. data/lib/picky/internals/generators/similarity/double_levenshtone.rb +81 -0
  35. data/lib/picky/internals/generators/similarity/none.rb +35 -0
  36. data/lib/picky/internals/generators/similarity/strategy.rb +11 -0
  37. data/lib/picky/internals/generators/similarity_generator.rb +19 -0
  38. data/lib/picky/internals/generators/strategy.rb +18 -0
  39. data/lib/picky/internals/generators/weights/default.rb +9 -0
  40. data/lib/picky/internals/generators/weights/logarithmic.rb +43 -0
  41. data/lib/picky/internals/generators/weights/strategy.rb +11 -0
  42. data/lib/picky/internals/generators/weights_generator.rb +19 -0
  43. data/lib/picky/{helpers → internals/helpers}/measuring.rb +0 -0
  44. data/lib/picky/internals/index/backend.rb +113 -0
  45. data/lib/picky/internals/index/file/basic.rb +101 -0
  46. data/lib/picky/internals/index/file/json.rb +38 -0
  47. data/lib/picky/internals/index/file/marshal.rb +38 -0
  48. data/lib/picky/internals/index/file/text.rb +60 -0
  49. data/lib/picky/internals/index/files.rb +24 -0
  50. data/lib/picky/internals/index/redis/basic.rb +77 -0
  51. data/lib/picky/internals/index/redis/list_hash.rb +46 -0
  52. data/lib/picky/internals/index/redis/string_hash.rb +35 -0
  53. data/lib/picky/internals/index/redis.rb +44 -0
  54. data/lib/picky/internals/indexed/bundle/base.rb +72 -0
  55. data/lib/picky/internals/indexed/bundle/memory.rb +69 -0
  56. data/lib/picky/internals/indexed/bundle/redis.rb +70 -0
  57. data/lib/picky/internals/indexed/categories.rb +135 -0
  58. data/lib/picky/internals/indexed/category.rb +90 -0
  59. data/lib/picky/internals/indexed/index.rb +57 -0
  60. data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/calculation.rb +0 -0
  61. data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/location.rb +4 -2
  62. data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/wrapper.rb +1 -1
  63. data/lib/picky/internals/indexed/wrappers/exact_first.rb +65 -0
  64. data/lib/picky/{indexers → internals/indexers}/no_source_specified_error.rb +0 -0
  65. data/lib/picky/{indexers → internals/indexers}/serial.rb +2 -2
  66. data/lib/picky/{indexers → internals/indexers}/solr.rb +0 -0
  67. data/lib/picky/internals/indexing/bundle/base.rb +219 -0
  68. data/lib/picky/internals/indexing/bundle/memory.rb +25 -0
  69. data/lib/picky/internals/indexing/bundle/redis.rb +28 -0
  70. data/lib/picky/internals/indexing/bundle/super_base.rb +65 -0
  71. data/lib/picky/internals/indexing/categories.rb +42 -0
  72. data/lib/picky/internals/indexing/category.rb +120 -0
  73. data/lib/picky/internals/indexing/index.rb +67 -0
  74. data/lib/picky/{performant.rb → internals/performant.rb} +0 -0
  75. data/lib/picky/internals/query/allocation.rb +88 -0
  76. data/lib/picky/internals/query/allocations.rb +137 -0
  77. data/lib/picky/internals/query/combination.rb +80 -0
  78. data/lib/picky/internals/query/combinations/base.rb +84 -0
  79. data/lib/picky/internals/query/combinations/memory.rb +58 -0
  80. data/lib/picky/internals/query/combinations/redis.rb +59 -0
  81. data/lib/picky/internals/query/indexes.rb +180 -0
  82. data/lib/picky/internals/query/qualifiers.rb +81 -0
  83. data/lib/picky/internals/query/token.rb +215 -0
  84. data/lib/picky/internals/query/tokens.rb +89 -0
  85. data/lib/picky/{query → internals/query}/weights.rb +0 -0
  86. data/lib/picky/internals/results/base.rb +106 -0
  87. data/lib/picky/internals/results/full.rb +17 -0
  88. data/lib/picky/internals/results/live.rb +17 -0
  89. data/lib/picky/{solr → internals/solr}/schema_generator.rb +0 -0
  90. data/lib/picky/internals/tokenizers/base.rb +166 -0
  91. data/lib/picky/internals/tokenizers/index.rb +63 -0
  92. data/lib/picky/internals/tokenizers/query.rb +79 -0
  93. data/lib/picky/loader.rb +148 -112
  94. data/lib/picky/query/base.rb +57 -26
  95. data/lib/picky/query/full.rb +1 -1
  96. data/lib/picky/query/live.rb +1 -1
  97. data/lib/picky/sources/db.rb +27 -6
  98. data/lib/tasks/index.rake +3 -3
  99. data/lib/tasks/try.rake +2 -2
  100. data/spec/lib/aliases_spec.rb +9 -0
  101. data/spec/lib/application_spec.rb +3 -3
  102. data/spec/lib/generators/aliases_spec.rb +1 -0
  103. data/spec/lib/{index_api_spec.rb → index/base_spec.rb} +7 -7
  104. data/spec/lib/index_bundle_spec.rb +71 -0
  105. data/spec/lib/indexed/indexes_spec.rb +61 -0
  106. data/spec/lib/indexing/indexes_spec.rb +94 -24
  107. data/spec/lib/{adapters → internals/adapters}/rack/base_spec.rb +2 -2
  108. data/spec/lib/{adapters → internals/adapters}/rack/live_parameters_spec.rb +2 -2
  109. data/spec/lib/{adapters → internals/adapters}/rack/query_spec.rb +2 -2
  110. data/spec/lib/{calculations → internals/calculations}/location_spec.rb +0 -0
  111. data/spec/lib/{cli_spec.rb → internals/cli_spec.rb} +4 -1
  112. data/spec/lib/{configuration → internals/configuration}/index_spec.rb +1 -1
  113. data/spec/lib/{cores_spec.rb → internals/cores_spec.rb} +0 -0
  114. data/spec/lib/{extensions → internals/extensions}/array_spec.rb +0 -0
  115. data/spec/lib/{extensions → internals/extensions}/hash_spec.rb +0 -0
  116. data/spec/lib/{extensions → internals/extensions}/module_spec.rb +0 -0
  117. data/spec/lib/{extensions → internals/extensions}/object_spec.rb +0 -0
  118. data/spec/lib/{extensions → internals/extensions}/symbol_spec.rb +0 -0
  119. data/spec/lib/{frontend_adapters → internals/frontend_adapters}/rack_spec.rb +11 -11
  120. data/spec/lib/{cacher → internals/generators}/cacher_strategy_spec.rb +2 -2
  121. data/spec/lib/internals/generators/partial/default_spec.rb +17 -0
  122. data/spec/lib/internals/generators/partial/none_spec.rb +17 -0
  123. data/spec/lib/{cacher → internals/generators}/partial/substring_spec.rb +26 -27
  124. data/spec/lib/{cacher → internals/generators}/partial_generator_spec.rb +5 -5
  125. data/spec/lib/{cacher → internals/generators}/similarity/double_levenshtone_spec.rb +4 -4
  126. data/spec/lib/{cacher → internals/generators}/similarity/none_spec.rb +2 -2
  127. data/spec/lib/{cacher → internals/generators}/similarity_generator_spec.rb +4 -4
  128. data/spec/lib/{cacher → internals/generators}/weights/logarithmic_spec.rb +2 -2
  129. data/spec/lib/internals/generators/weights_generator_spec.rb +21 -0
  130. data/spec/lib/{helpers → internals/helpers}/measuring_spec.rb +0 -0
  131. data/spec/lib/{index → internals/index}/file/basic_spec.rb +2 -2
  132. data/spec/lib/{index → internals/index}/file/json_spec.rb +2 -2
  133. data/spec/lib/{index → internals/index}/file/marshal_spec.rb +2 -2
  134. data/spec/lib/{index → internals/index}/file/text_spec.rb +2 -2
  135. data/spec/lib/{index → internals/index}/files_spec.rb +2 -2
  136. data/spec/lib/{indexed/bundle_spec.rb → internals/indexed/bundle/memory_spec.rb} +4 -5
  137. data/spec/lib/{indexed → internals/indexed}/categories_spec.rb +13 -13
  138. data/spec/lib/{indexed → internals/indexed}/category_spec.rb +59 -32
  139. data/spec/lib/{indexed → internals/indexed}/index_spec.rb +5 -5
  140. data/spec/lib/{indexed → internals/indexed}/wrappers/bundle/calculation_spec.rb +0 -0
  141. data/spec/lib/{indexed → internals/indexed}/wrappers/bundle/wrapper_spec.rb +0 -0
  142. data/spec/lib/{indexed → internals/indexed}/wrappers/exact_first_spec.rb +5 -5
  143. data/spec/lib/{indexers → internals/indexers}/serial_spec.rb +0 -0
  144. data/spec/lib/{indexing/bundle_partial_generation_speed_spec.rb → internals/indexing/bundle/memory_partial_generation_speed_spec.rb} +3 -3
  145. data/spec/lib/{indexing/bundle_spec.rb → internals/indexing/bundle/memory_spec.rb} +3 -3
  146. data/spec/lib/{index/bundle_spec.rb → internals/indexing/bundle/super_base_spec.rb} +9 -3
  147. data/spec/lib/{indexing → internals/indexing}/category_spec.rb +3 -3
  148. data/spec/lib/{indexing → internals/indexing}/index_spec.rb +3 -3
  149. data/spec/lib/internals/indexing/indexes_spec.rb +36 -0
  150. data/spec/lib/{interfaces → internals/interfaces}/live_parameters_spec.rb +0 -0
  151. data/spec/lib/internals/results/base_spec.rb +105 -0
  152. data/spec/lib/internals/results/full_spec.rb +78 -0
  153. data/spec/lib/internals/results/live_spec.rb +88 -0
  154. data/spec/lib/{solr → internals/solr}/schema_generator_spec.rb +0 -0
  155. data/spec/lib/{tokenizers → internals/tokenizers}/base_spec.rb +3 -3
  156. data/spec/lib/{tokenizers → internals/tokenizers}/index_spec.rb +9 -9
  157. data/spec/lib/{tokenizers → internals/tokenizers}/query_spec.rb +11 -11
  158. data/spec/lib/query/allocation_spec.rb +12 -12
  159. data/spec/lib/query/allocations_spec.rb +19 -19
  160. data/spec/lib/query/base_spec.rb +28 -4
  161. data/spec/lib/query/combination_spec.rb +8 -9
  162. data/spec/lib/query/combinations/base_spec.rb +116 -0
  163. data/spec/lib/query/{combinations_spec.rb → combinations/memory_spec.rb} +14 -14
  164. data/spec/lib/query/combinations/redis_spec.rb +132 -0
  165. data/spec/lib/query/full_spec.rb +2 -2
  166. data/spec/lib/query/indexes_spec.rb +81 -0
  167. data/spec/lib/query/live_spec.rb +3 -3
  168. data/spec/lib/query/qualifiers_spec.rb +6 -6
  169. data/spec/lib/query/token_spec.rb +38 -38
  170. data/spec/lib/query/tokens_spec.rb +35 -35
  171. data/spec/lib/sources/db_spec.rb +23 -18
  172. metadata +212 -181
  173. data/lib/picky/adapters/rack/base.rb +0 -23
  174. data/lib/picky/adapters/rack/live_parameters.rb +0 -33
  175. data/lib/picky/adapters/rack/query.rb +0 -59
  176. data/lib/picky/adapters/rack.rb +0 -28
  177. data/lib/picky/cacher/convenience.rb +0 -3
  178. data/lib/picky/cacher/generator.rb +0 -15
  179. data/lib/picky/cacher/partial/default.rb +0 -5
  180. data/lib/picky/cacher/partial/none.rb +0 -31
  181. data/lib/picky/cacher/partial/strategy.rb +0 -21
  182. data/lib/picky/cacher/partial/substring.rb +0 -118
  183. data/lib/picky/cacher/partial_generator.rb +0 -15
  184. data/lib/picky/cacher/similarity/default.rb +0 -7
  185. data/lib/picky/cacher/similarity/double_levenshtone.rb +0 -77
  186. data/lib/picky/cacher/similarity/none.rb +0 -31
  187. data/lib/picky/cacher/similarity/strategy.rb +0 -9
  188. data/lib/picky/cacher/similarity_generator.rb +0 -15
  189. data/lib/picky/cacher/strategy.rb +0 -12
  190. data/lib/picky/cacher/weights/default.rb +0 -7
  191. data/lib/picky/cacher/weights/logarithmic.rb +0 -39
  192. data/lib/picky/cacher/weights/strategy.rb +0 -9
  193. data/lib/picky/cacher/weights_generator.rb +0 -15
  194. data/lib/picky/frontend_adapters/rack.rb +0 -150
  195. data/lib/picky/index/bundle.rb +0 -54
  196. data/lib/picky/index/file/basic.rb +0 -97
  197. data/lib/picky/index/file/json.rb +0 -34
  198. data/lib/picky/index/file/marshal.rb +0 -34
  199. data/lib/picky/index/file/text.rb +0 -56
  200. data/lib/picky/index/files.rb +0 -118
  201. data/lib/picky/index_api.rb +0 -175
  202. data/lib/picky/indexed/bundle.rb +0 -54
  203. data/lib/picky/indexed/categories.rb +0 -131
  204. data/lib/picky/indexed/category.rb +0 -85
  205. data/lib/picky/indexed/index.rb +0 -39
  206. data/lib/picky/indexed/wrappers/exact_first.rb +0 -61
  207. data/lib/picky/indexing/bundle.rb +0 -213
  208. data/lib/picky/indexing/categories.rb +0 -38
  209. data/lib/picky/indexing/category.rb +0 -117
  210. data/lib/picky/indexing/index.rb +0 -55
  211. data/lib/picky/query/allocation.rb +0 -82
  212. data/lib/picky/query/allocations.rb +0 -130
  213. data/lib/picky/query/combination.rb +0 -74
  214. data/lib/picky/query/combinations.rb +0 -105
  215. data/lib/picky/query/qualifiers.rb +0 -77
  216. data/lib/picky/query/token.rb +0 -202
  217. data/lib/picky/query/tokens.rb +0 -86
  218. data/lib/picky/query/weigher.rb +0 -165
  219. data/lib/picky/results/base.rb +0 -102
  220. data/lib/picky/results/full.rb +0 -13
  221. data/lib/picky/results/live.rb +0 -13
  222. data/lib/picky/tokenizers/base.rb +0 -161
  223. data/lib/picky/tokenizers/index.rb +0 -58
  224. data/lib/picky/tokenizers/query.rb +0 -74
  225. data/spec/lib/cacher/partial/default_spec.rb +0 -15
  226. data/spec/lib/cacher/partial/none_spec.rb +0 -17
  227. data/spec/lib/cacher/weights_generator_spec.rb +0 -21
  228. data/spec/lib/results/base_spec.rb +0 -257
  229. data/spec/lib/results/live_spec.rb +0 -15
@@ -1,24 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Cacher::Partial::Substring do
3
+ describe Internals::Generators::Partial::Substring do
4
4
 
5
5
  context 'default from' do
6
- before(:each) do
7
- @cacher = Cacher::Partial::Substring.new
8
- end
6
+ let(:generator) { described_class.new }
7
+
9
8
  describe 'use_exact_for_partial?' do
10
9
  it 'returns false' do
11
- Cacher::Partial::Substring.new.use_exact_for_partial?.should == false
10
+ described_class.new.use_exact_for_partial?.should == false
12
11
  end
13
12
  end
14
13
  describe 'from' do
15
14
  it 'should return the right value' do
16
- @cacher.from.should == 1
15
+ generator.from.should == 1
17
16
  end
18
17
  end
19
18
  describe 'generate_from' do
20
19
  it 'should generate the right index' do
21
- @cacher.generate_from(florian: [1], flavia: [2]).should == {
20
+ generator.generate_from(florian: [1], flavia: [2]).should == {
22
21
  florian: [1],
23
22
  floria: [1],
24
23
  flori: [1],
@@ -33,10 +32,10 @@ describe Cacher::Partial::Substring do
33
32
  }
34
33
  end
35
34
  it "should be fast" do
36
- performance_of { @cacher.generate_from(florian: [1], flavia: [2]) }.should < 0.0001
35
+ performance_of { generator.generate_from(florian: [1], flavia: [2]) }.should < 0.0001
37
36
  end
38
37
  it "should handle duplicate ids" do
39
- @cacher.generate_from(flo: [1], fla: [1]).should == {
38
+ generator.generate_from(flo: [1], fla: [1]).should == {
40
39
  flo: [1],
41
40
  fl: [1],
42
41
  f: [1],
@@ -48,10 +47,10 @@ describe Cacher::Partial::Substring do
48
47
  context 'from set' do
49
48
  describe 'negative from' do
50
49
  before(:each) do
51
- @cacher = Cacher::Partial::Substring.new from: -2
50
+ @generator = described_class.new from: -2
52
51
  end
53
52
  it 'should generate the right index' do
54
- @cacher.generate_from(florian: [1], flavia: [2]).should == {
53
+ @generator.generate_from(florian: [1], flavia: [2]).should == {
55
54
  florian: [1],
56
55
  floria: [1],
57
56
  flavia: [2],
@@ -61,11 +60,11 @@ describe Cacher::Partial::Substring do
61
60
  end
62
61
  context "large from" do
63
62
  before(:each) do
64
- @cacher = Cacher::Partial::Substring.new from: 10
63
+ @generator = described_class.new from: 10
65
64
  end
66
65
  describe 'generate_from' do
67
66
  it 'should generate the right index' do
68
- @cacher.generate_from(florian: [1], :'01234567890' => [2] ).should == {
67
+ @generator.generate_from(florian: [1], :'01234567890' => [2] ).should == {
69
68
  :florian => [1],
70
69
  :'01234567890' => [2],
71
70
  :'0123456789' => [2]
@@ -75,21 +74,21 @@ describe Cacher::Partial::Substring do
75
74
  end
76
75
  context 'default to' do
77
76
  before(:each) do
78
- @cacher = Cacher::Partial::Substring.new from: 4
77
+ @generator = described_class.new from: 4
79
78
  end
80
79
  describe 'to' do
81
80
  it 'should return the right value' do
82
- @cacher.to.should == -1
81
+ @generator.to.should == -1
83
82
  end
84
83
  end
85
84
  describe 'from' do
86
85
  it 'should return the right value' do
87
- @cacher.from.should == 4
86
+ @generator.from.should == 4
88
87
  end
89
88
  end
90
89
  describe 'generate_from' do
91
90
  it 'should generate the right index' do
92
- @cacher.generate_from( :florian => [1], :flavia => [2] ).should == {
91
+ @generator.generate_from( :florian => [1], :flavia => [2] ).should == {
93
92
  :florian => [1],
94
93
  :floria => [1],
95
94
  :flori => [1],
@@ -111,7 +110,7 @@ describe Cacher::Partial::Substring do
111
110
  end
112
111
  end
113
112
  it "should be fast" do
114
- performance_of { @cacher.generate_from(@index) }.should < 0.008
113
+ performance_of { @generator.generate_from(@index) }.should < 0.008
115
114
  end
116
115
  end
117
116
  describe "a bigger example with almost identical symbols" do
@@ -123,27 +122,27 @@ describe Cacher::Partial::Substring do
123
122
  end
124
123
  end
125
124
  it "should be fast" do
126
- performance_of { @cacher.generate_from(@index) }.should < 0.0045
125
+ performance_of { @generator.generate_from(@index) }.should < 0.0045
127
126
  end
128
127
  end
129
128
  end
130
129
  context 'to set' do
131
130
  before(:each) do
132
- @cacher = Cacher::Partial::Substring.new from: 4, to: -2
131
+ @generator = described_class.new from: 4, to: -2
133
132
  end
134
133
  describe 'to' do
135
134
  it 'should return the right value' do
136
- @cacher.to.should == -2
135
+ @generator.to.should == -2
137
136
  end
138
137
  end
139
138
  describe 'from' do
140
139
  it 'should return the right value' do
141
- @cacher.from.should == 4
140
+ @generator.from.should == 4
142
141
  end
143
142
  end
144
143
  describe 'generate_from' do
145
144
  it 'should generate the right index' do
146
- @cacher.generate_from( :florian => [1], :flavia => [2] ).should == {
145
+ @generator.generate_from( :florian => [1], :flavia => [2] ).should == {
147
146
  :floria => [1],
148
147
  :flori => [1],
149
148
  :flor => [1],
@@ -155,21 +154,21 @@ describe Cacher::Partial::Substring do
155
154
  end
156
155
  context 'to set' do
157
156
  before(:each) do
158
- @cacher = Cacher::Partial::Substring.new from: 4, to: 0
157
+ @generator = described_class.new from: 4, to: 0
159
158
  end
160
159
  describe 'to' do
161
160
  it 'should return the right value' do
162
- @cacher.to.should == 0
161
+ @generator.to.should == 0
163
162
  end
164
163
  end
165
164
  describe 'from' do
166
165
  it 'should return the right value' do
167
- @cacher.from.should == 4
166
+ @generator.from.should == 4
168
167
  end
169
168
  end
170
169
  describe 'generate_from' do
171
170
  it 'should generate the right index' do
172
- @cacher.generate_from( :florian => [1], :flavia => [2] ).should == {
171
+ @generator.generate_from( :florian => [1], :flavia => [2] ).should == {
173
172
  :florian => [1],
174
173
  :floria => [1],
175
174
  :flori => [1],
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Cacher::PartialGenerator do
3
+ describe Internals::Generators::PartialGenerator do
4
4
 
5
5
  context 'integration' do
6
6
  it 'should generate the correct values with a given strategy' do
7
- generator = Cacher::PartialGenerator.new :meier => [1], :maier => [2]
7
+ generator = described_class.new :meier => [1], :maier => [2]
8
8
 
9
- generator.generate(Cacher::Partial::Substring.new).should == {
9
+ generator.generate(Internals::Generators::Partial::Substring.new).should == {
10
10
  :meier => [1],
11
11
  :meie => [1],
12
12
  :mei => [1],
@@ -19,9 +19,9 @@ describe Cacher::PartialGenerator do
19
19
  }
20
20
  end
21
21
  it 'should generate the correct values with a given specific strategy' do
22
- generator = Cacher::PartialGenerator.new :meier => [1], :maier => [2]
22
+ generator = described_class.new :meier => [1], :maier => [2]
23
23
 
24
- generator.generate(Cacher::Partial::Substring.new(:from => 3)).should == {
24
+ generator.generate(Internals::Generators::Partial::Substring.new(:from => 3)).should == {
25
25
  :meier => [1],
26
26
  :meie => [1],
27
27
  :mei => [1],
@@ -2,10 +2,10 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Cacher::Similarity::DoubleLevenshtone do
5
+ describe Internals::Generators::Similarity::DoubleLevenshtone do
6
6
 
7
7
  before(:each) do
8
- @similarity = Cacher::Similarity::DoubleLevenshtone.new
8
+ @similarity = described_class.new
9
9
  end
10
10
 
11
11
  def self.it_should_encode text, expected
@@ -30,7 +30,7 @@ describe Cacher::Similarity::DoubleLevenshtone do
30
30
 
31
31
  describe 'with reduced amount' do
32
32
  before(:each) do
33
- @similarity = Cacher::Similarity::DoubleLevenshtone.new(1)
33
+ @similarity = described_class.new(1)
34
34
  end
35
35
  it_should_generate_from({ :maier => nil, :meier => nil }, :MR => [:maier])
36
36
  it_should_generate_from({ :susan => nil, :susanne => nil, :bruderer => nil }, :SSN => [:susan], :PRTR => [:bruderer])
@@ -59,7 +59,7 @@ describe Cacher::Similarity::DoubleLevenshtone do
59
59
 
60
60
  context "alias" do
61
61
  it "works also with Phonetic" do
62
- lambda { Cacher::Similarity::Phonetic.new(1) }.should_not raise_error
62
+ lambda { Internals::Generators::Similarity::Phonetic.new(1) }.should_not raise_error
63
63
  end
64
64
  end
65
65
 
@@ -2,10 +2,10 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Cacher::Similarity::None do
5
+ describe Internals::Generators::Similarity::None do
6
6
 
7
7
  before(:each) do
8
- @similarity = Cacher::Similarity::None.new
8
+ @similarity = described_class.new
9
9
  end
10
10
 
11
11
  describe "saved?" do
@@ -1,21 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Cacher::SimilarityGenerator do
3
+ describe Internals::Generators::SimilarityGenerator do
4
4
 
5
5
  context 'integration' do
6
6
  it 'should generate the correct values' do
7
- generator = Cacher::SimilarityGenerator.new :anything_really
7
+ generator = described_class.new :anything_really
8
8
 
9
9
  generator.generate.should == {}
10
10
  end
11
11
  it 'should generate the correct values with a given strategy' do
12
- generator = Cacher::SimilarityGenerator.new :meier => nil,
12
+ generator = described_class.new :meier => nil,
13
13
  :maier => nil,
14
14
  :mayer => nil,
15
15
  :meyer => nil,
16
16
  :peter => nil
17
17
 
18
- generator.generate(Cacher::Similarity::DoubleLevenshtone.new).should == { :MR => [:meier, :maier, :mayer, :meyer], :PTR => [:peter] }
18
+ generator.generate(Internals::Generators::Similarity::DoubleLevenshtone.new).should == { :MR => [:meier, :maier, :mayer, :meyer], :PTR => [:peter] }
19
19
  end
20
20
  end
21
21
 
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Cacher::Weights::Logarithmic do
3
+ describe Internals::Generators::Weights::Logarithmic do
4
4
 
5
5
  before(:each) do
6
- @cacher = Cacher::Weights::Logarithmic.new
6
+ @cacher = described_class.new
7
7
  end
8
8
 
9
9
  describe 'generate_from' do
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Internals::Generators::WeightsGenerator do
4
+
5
+ context 'integration' do
6
+ it 'should generate the correct values' do
7
+ generator = described_class.new :a => Array.new(0),
8
+ :b => Array.new(1),
9
+ :c => Array.new(10),
10
+ :d => Array.new(100),
11
+ :e => Array.new(1000)
12
+
13
+ result = generator.generate
14
+
15
+ result[:c].should be_close 2.3, 0.011
16
+ result[:d].should be_close 4.6, 0.011
17
+ result[:e].should be_close 6.9, 0.011
18
+ end
19
+ end
20
+
21
+ end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Index::File::Basic do
3
+ describe Internals::Index::File::Basic do
4
4
 
5
5
  before(:each) do
6
- @file = Index::File::Basic.new "some/cache/path/to/file"
6
+ @file = described_class.new "some/cache/path/to/file"
7
7
  end
8
8
 
9
9
  describe "backup_file_path_of" do
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Index::File::JSON do
3
+ describe Internals::Index::File::JSON do
4
4
 
5
5
  before(:each) do
6
- @file = Index::File::JSON.new "some_cache_path"
6
+ @file = described_class.new "some_cache_path"
7
7
  end
8
8
 
9
9
  describe "dump" do
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Index::File::Marshal do
3
+ describe Internals::Index::File::Marshal do
4
4
 
5
5
  before(:each) do
6
- @file = Index::File::Marshal.new "some_cache_path"
6
+ @file = described_class.new "some_cache_path"
7
7
  end
8
8
 
9
9
  describe "dump" do
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Index::File::Text do
3
+ describe Internals::Index::File::Text do
4
4
 
5
5
  before(:each) do
6
- @file = Index::File::Text.new "some_cache_path"
6
+ @file = described_class.new "some_cache_path"
7
7
  end
8
8
 
9
9
  describe "load" do
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Index::Files do
3
+ describe Internals::Index::Files do
4
4
 
5
5
  before(:each) do
6
6
  index = stub :index, :name => :some_index
7
7
  category = stub :category, :name => :some_category
8
8
  configuration = Configuration::Index.new index, category
9
9
 
10
- @files = Index::Files.new :some_name, configuration
10
+ @files = described_class.new :some_name, configuration
11
11
 
12
12
  @prepared = @files.prepared
13
13
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexed::Bundle do
3
+ describe Internals::Indexed::Bundle::Memory do
4
4
 
5
5
  before(:each) do
6
6
  @category = stub :category, :name => :some_category
@@ -8,13 +8,12 @@ describe Indexed::Bundle do
8
8
  @configuration = Configuration::Index.new @index, @category
9
9
 
10
10
  @similarity = stub :similarity
11
- @bundle_class = Indexed::Bundle
12
- @bundle = @bundle_class.new :some_name, @configuration, @similarity
11
+ @bundle = described_class.new :some_name, @configuration, @similarity
13
12
  end
14
13
 
15
14
  describe 'identifier' do
16
15
  it 'should return a specific identifier' do
17
- @bundle.identifier.should == 'some_index some_category (some_name)'
16
+ @bundle.identifier.should == 'some_index:some_category:some_name'
18
17
  end
19
18
  end
20
19
 
@@ -100,7 +99,7 @@ describe Indexed::Bundle do
100
99
  @index = stub :index, :name => :some_index
101
100
  @configuration = Configuration::Index.new @index, @category
102
101
 
103
- @bundle = @bundle_class.new :some_name, @configuration, :similarity
102
+ @bundle = described_class.new :some_name, @configuration, :similarity
104
103
  end
105
104
  it 'should initialize the index correctly' do
106
105
  @bundle.index.should == {}
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexed::Categories do
3
+ describe Internals::Indexed::Categories do
4
4
  context 'with option ignore_unassigned_tokens' do
5
5
  context 'ignore_unassigned_tokens true' do
6
6
  before(:each) do
7
- @categories = Indexed::Categories.new ignore_unassigned_tokens: true
7
+ @categories = described_class.new ignore_unassigned_tokens: true
8
8
  end
9
9
  it 'should return the right value' do
10
10
  @categories.ignore_unassigned_tokens.should == true
@@ -12,7 +12,7 @@ describe Indexed::Categories do
12
12
  end
13
13
  context 'ignore_unassigned_tokens false' do
14
14
  before(:each) do
15
- @categories = Indexed::Categories.new ignore_unassigned_tokens: false
15
+ @categories = described_class.new ignore_unassigned_tokens: false
16
16
  end
17
17
  it 'should return the right value' do
18
18
  @categories.ignore_unassigned_tokens.should == false
@@ -24,14 +24,14 @@ describe Indexed::Categories do
24
24
  before(:each) do
25
25
  @index1 = stub :index1, :name => :some_index
26
26
 
27
- @categories = Indexed::Categories.new
28
- @categories << Indexed::Category.new(:category1, @index1)
29
- @categories << Indexed::Category.new(:category2, @index1)
30
- @categories << Indexed::Category.new(:category3, @index1)
27
+ @categories = described_class.new
28
+ @categories << Internals::Indexed::Category.new(:category1, @index1)
29
+ @categories << Internals::Indexed::Category.new(:category2, @index1)
30
+ @categories << Internals::Indexed::Category.new(:category3, @index1)
31
31
  end
32
32
  describe "similar_possible_for" do
33
33
  before(:each) do
34
- @token = Query::Token.processed 'similar~'
34
+ @token = Internals::Query::Token.processed 'similar~'
35
35
  end
36
36
  it "returns possible categories" do
37
37
  @categories.similar_possible_for(@token).should == []
@@ -41,7 +41,7 @@ describe Indexed::Categories do
41
41
 
42
42
  describe 'clear' do
43
43
  before(:each) do
44
- @categories = Indexed::Categories.new
44
+ @categories = described_class.new
45
45
  end
46
46
  it 'is clear right at the beginning' do
47
47
  @categories.categories.should be_empty
@@ -67,11 +67,11 @@ describe Indexed::Categories do
67
67
  before(:each) do
68
68
  @index1 = stub :index1, :name => :some_index
69
69
 
70
- @category1 = Indexed::Category.new :category1, @index1
71
- @category2 = Indexed::Category.new :category2, @index1
72
- @category3 = Indexed::Category.new :category3, @index1
70
+ @category1 = Internals::Indexed::Category.new :category1, @index1
71
+ @category2 = Internals::Indexed::Category.new :category2, @index1
72
+ @category3 = Internals::Indexed::Category.new :category3, @index1
73
73
 
74
- @categories = Indexed::Categories.new
74
+ @categories = described_class.new
75
75
  @categories << @category1
76
76
  @categories << @category2
77
77
  @categories << @category3
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexed::Category do
3
+ describe Internals::Indexed::Category do
4
4
 
5
5
  before(:each) do
6
6
  @index = stub :index, :name => :some_index
@@ -11,28 +11,49 @@ describe Indexed::Category do
11
11
  @exact = stub :exact, :dump => nil
12
12
  @partial = stub :partial, :dump => nil
13
13
 
14
- @category = Indexed::Category.new :some_name, @index, :partial => @partial_strategy,
15
- :weights => @weights_strategy,
16
- :similarity => @similarity_strategy,
17
- :qualifiers => [:q, :qualifier],
18
- :exact_index_bundle => @exact,
19
- :partial_index_bundle => @partial
14
+ @category = described_class.new :some_name, @index, :partial => @partial_strategy,
15
+ :weights => @weights_strategy,
16
+ :similarity => @similarity_strategy,
17
+ :qualifiers => [:q, :qualifier]
20
18
 
21
19
  @category.stub! :exclaim
22
20
  end
23
21
 
24
22
  describe 'partial' do
25
- context 'with a partial strategy that uses the exact index' do
23
+ context 'default' do
26
24
  before(:each) do
27
- @partial_strategy.stub! :use_exact_for_partial? => true
25
+ @category = described_class.new :some_name, @index
28
26
  end
29
- it 'returns the partial index' do
30
- @category.partial.should == @exact
27
+ context 'with a partial strategy that uses the exact index' do
28
+ before(:each) do
29
+ @partial_strategy.stub! :use_exact_for_partial? => true
30
+ end
31
+ it 'returns the partial index' do
32
+ @category.partial.should be_kind_of(Internals::Indexed::Bundle::Memory)
33
+ end
34
+ end
35
+ context 'with a partial strategy that uses the partial index (default)' do
36
+ it 'returns the partial index' do
37
+ @category.partial.should be_kind_of(Internals::Indexed::Bundle::Memory)
38
+ end
31
39
  end
32
40
  end
33
- context 'with a partial strategy that uses the partial index (default)' do
34
- it 'returns the partial index' do
35
- @category.partial.should == @partial
41
+ context 'indexed_bundle_class defined' do
42
+ before(:each) do
43
+ @category = described_class.new :some_name, @index, :indexed_bundle_class => Internals::Indexed::Bundle::Redis
44
+ end
45
+ context 'with a partial strategy that uses the exact index' do
46
+ before(:each) do
47
+ @partial_strategy.stub! :use_exact_for_partial? => true
48
+ end
49
+ it 'returns the partial index' do
50
+ @category.partial.should be_kind_of(Internals::Indexed::Bundle::Redis)
51
+ end
52
+ end
53
+ context 'with a partial strategy that uses the partial index (default)' do
54
+ it 'returns the partial index' do
55
+ @category.partial.should be_kind_of(Internals::Indexed::Bundle::Redis)
56
+ end
36
57
  end
37
58
  end
38
59
  end
@@ -122,35 +143,41 @@ describe Indexed::Category do
122
143
  @category.stub! :weight => :some_weight, :bundle_for => :bundle
123
144
  end
124
145
  it 'should return a new combination' do
125
- @category.combination_for(@token).should be_kind_of(::Query::Combination)
146
+ @category.combination_for(@token).should be_kind_of(Internals::Query::Combination)
126
147
  end
127
148
  it 'should create the combination correctly' do
128
- ::Query::Combination.should_receive(:new).once.with @token, @category
149
+ Internals::Query::Combination.should_receive(:new).once.with @token, @category
129
150
 
130
151
  @category.combination_for @token
131
152
  end
132
153
  end
133
154
  end
155
+
156
+ context 'stubbed exact/partial' do
157
+ before(:each) do
158
+ @category.stub! :exact => (@exact = stub :exact)
159
+ @category.stub! :partial => (@partial = stub :partial)
160
+ end
161
+ describe 'bundle_for' do
162
+ it 'should return the right bundle' do
163
+ token = stub :token, :partial? => false
134
164
 
135
- describe 'bundle_for' do
136
- it 'should return the right bundle' do
137
- token = stub :token, :partial? => false
165
+ @category.bundle_for(token).should == @exact
166
+ end
167
+ it 'should return the right bundle' do
168
+ token = stub :token, :partial? => true
138
169
 
139
- @category.bundle_for(token).should == @exact
170
+ @category.bundle_for(token).should == @partial
171
+ end
140
172
  end
141
- it 'should return the right bundle' do
142
- token = stub :token, :partial? => true
143
173
 
144
- @category.bundle_for(token).should == @partial
145
- end
146
- end
147
-
148
- describe 'load_from_cache' do
149
- it 'should call two methods' do
150
- @exact.should_receive(:load).once
151
- @partial.should_receive(:load).once
152
-
153
- @category.load_from_cache
174
+ describe 'load_from_cache' do
175
+ it 'should call two methods' do
176
+ @exact.should_receive(:load).once
177
+ @partial.should_receive(:load).once
178
+
179
+ @category.load_from_cache
180
+ end
154
181
  end
155
182
  end
156
183
 
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexed::Index do
3
+ describe Internals::Indexed::Index do
4
4
 
5
5
  context 'without stubbed categories' do
6
6
  before(:each) do
7
- @index = Indexed::Index.new :some_index_name
7
+ @index = described_class.new :some_index_name
8
8
  end
9
9
 
10
10
  describe 'define_category' do
@@ -14,7 +14,7 @@ describe Indexed::Index do
14
14
  @index.categories.categories.size.should == 1
15
15
  end
16
16
  it 'returns the new category' do
17
- @index.define_category(:some_category_name).should be_kind_of(Indexed::Category)
17
+ @index.define_category(:some_category_name).should be_kind_of(Internals::Indexed::Category)
18
18
  end
19
19
  end
20
20
  end
@@ -23,7 +23,7 @@ describe Indexed::Index do
23
23
  before(:each) do
24
24
  @categories = stub :categories
25
25
 
26
- @index = Indexed::Index.new :some_name
26
+ @index = described_class.new :some_name
27
27
  @index.define_category :some_category_name1
28
28
  @index.define_category :some_category_name2
29
29
 
@@ -48,7 +48,7 @@ describe Indexed::Index do
48
48
 
49
49
  context "no categories" do
50
50
  it "works" do
51
- Indexed::Index.new :some_name
51
+ described_class.new :some_name
52
52
  end
53
53
  end
54
54