@@ -189,25 +189,11 @@ def build_index(cutoff = 0.75)
189189 tda_arrays = tda . map { |v | v . respond_to? ( :to_a ) ? v . to_a : v }
190190 tdm = self . class . matrix_class . alloc ( *tda_arrays ) . trans
191191 ntdm = build_reduced_matrix ( tdm , cutoff )
192-
193- ntdm . size [ 1 ] . times do |col |
194- vec = self . class . vector_class . alloc ( ntdm . column ( col ) . to_a ) . row
195- doc_list [ col ] . lsi_vector = vec
196- doc_list [ col ] . lsi_norm = vec . normalize
197- end
192+ assign_native_ext_lsi_vectors ( ntdm , doc_list )
198193 else
199194 tdm = Matrix . rows ( tda ) . trans
200195 ntdm = build_reduced_matrix ( tdm , cutoff )
201-
202- ntdm . column_size . times do |col |
203- next unless doc_list [ col ]
204-
205- column = ntdm . column ( col )
206- next unless column
207-
208- doc_list [ col ] . lsi_vector = column
209- doc_list [ col ] . lsi_norm = column . normalize
210- end
196+ assign_ruby_lsi_vectors ( ntdm , doc_list )
211197 end
212198
213199 @built_at_version = @version
@@ -381,6 +367,30 @@ def marshal_load(data)
381367
382368 private
383369
370+ # Assigns LSI vectors using native C extension
371+ # @rbs (untyped, Array[ContentNode]) -> void
372+ def assign_native_ext_lsi_vectors ( ntdm , doc_list )
373+ ntdm . size [ 1 ] . times do |col |
374+ vec = self . class . vector_class . alloc ( ntdm . column ( col ) . to_a ) . row
375+ doc_list [ col ] . lsi_vector = vec
376+ doc_list [ col ] . lsi_norm = vec . normalize
377+ end
378+ end
379+
380+ # Assigns LSI vectors using pure Ruby Matrix
381+ # @rbs (untyped, Array[ContentNode]) -> void
382+ def assign_ruby_lsi_vectors ( ntdm , doc_list )
383+ ntdm . column_size . times do |col |
384+ next unless doc_list [ col ]
385+
386+ column = ntdm . column ( col )
387+ next unless column
388+
389+ doc_list [ col ] . lsi_vector = column
390+ doc_list [ col ] . lsi_norm = column . normalize
391+ end
392+ end
393+
384394 # Unlocked version of needs_rebuild? for internal use when lock is already held
385395 # @rbs () -> bool
386396 def needs_rebuild_unlocked?
@@ -389,10 +399,10 @@ def needs_rebuild_unlocked?
389399
390400 # Unlocked version of proximity_array_for_content for internal use
391401 # @rbs (String) ?{ (String) -> String } -> Array[[String, Float]]
392- def proximity_array_for_content_unlocked ( doc , &block )
402+ def proximity_array_for_content_unlocked ( doc , &)
393403 return [ ] if needs_rebuild_unlocked?
394404
395- content_node = node_for_content_unlocked ( doc , &block )
405+ content_node = node_for_content_unlocked ( doc , &)
396406 result =
397407 @items . keys . collect do |item |
398408 val = if self . class . native_available?
@@ -407,10 +417,10 @@ def proximity_array_for_content_unlocked(doc, &block)
407417
408418 # Unlocked version of proximity_norms_for_content for internal use
409419 # @rbs (String) ?{ (String) -> String } -> Array[[String, Float]]
410- def proximity_norms_for_content_unlocked ( doc , &block )
420+ def proximity_norms_for_content_unlocked ( doc , &)
411421 return [ ] if needs_rebuild_unlocked?
412422
413- content_node = node_for_content_unlocked ( doc , &block )
423+ content_node = node_for_content_unlocked ( doc , &)
414424 result =
415425 @items . keys . collect do |item |
416426 val = if self . class . native_available?
@@ -425,9 +435,9 @@ def proximity_norms_for_content_unlocked(doc, &block)
425435
426436 # Unlocked version of vote for internal use
427437 # @rbs (String, ?Float) ?{ (String) -> String } -> Hash[String | Symbol, Float]
428- def vote_unlocked ( doc , cutoff = 0.30 , &block )
438+ def vote_unlocked ( doc , cutoff = 0.30 , &)
429439 icutoff = ( @items . size * cutoff ) . round
430- carry = proximity_array_for_content_unlocked ( doc , &block )
440+ carry = proximity_array_for_content_unlocked ( doc , &)
431441 carry = carry [ 0 ..( icutoff - 1 ) ]
432442 votes = { }
433443 carry . each do |pair |
0 commit comments