Class: Kotoshu::Embeddings::Search::MinHeap
- Inherits:
-
Object
- Object
- Kotoshu::Embeddings::Search::MinHeap
- Defined in:
- lib/kotoshu/embeddings/search.rb
Overview
Min-heap for top-k selection
Instance Method Summary collapse
- #each ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(max_size) ⇒ MinHeap
constructor
A new instance of MinHeap.
- #push(item) ⇒ Object
- #size ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize(max_size) ⇒ MinHeap
Returns a new instance of MinHeap.
21 22 23 24 |
# File 'lib/kotoshu/embeddings/search.rb', line 21 def initialize(max_size) @max_size = max_size @heap = [] end |
Instance Method Details
#each ⇒ Object
40 41 42 |
# File 'lib/kotoshu/embeddings/search.rb', line 40 def each(&) @heap.each(&) end |
#empty? ⇒ Boolean
32 33 34 |
# File 'lib/kotoshu/embeddings/search.rb', line 32 def empty? @heap.empty? end |
#push(item) ⇒ Object
26 27 28 29 30 |
# File 'lib/kotoshu/embeddings/search.rb', line 26 def push(item) @heap << item @heap.sort_by! { |i| i[:similarity] } @heap.shift if @heap.size > @max_size end |
#size ⇒ Object
36 37 38 |
# File 'lib/kotoshu/embeddings/search.rb', line 36 def size @heap.size end |
#to_a ⇒ Object
44 45 46 |
# File 'lib/kotoshu/embeddings/search.rb', line 44 def to_a @heap.dup end |