Class: Ferret::Index::MultipleTermDocPosEnum
- Inherits:
-
TermDocEnum
- Object
- TermDocEnum
- Ferret::Index::MultipleTermDocPosEnum
- Defined in:
- lib/ferret/index/multiple_term_doc_pos_enum.rb
Overview
Describe class MultipleTermPositions
here.
Defined Under Namespace
Classes: TermPositionsQueue
Instance Method Summary collapse
- #close ⇒ Object
- #doc ⇒ Object
- #freq ⇒ Object
-
#initialize(reader, terms) ⇒ MultipleTermDocPosEnum
constructor
Creates a new
MultipleTermPositions
instance. - #next? ⇒ Boolean
- #next_position ⇒ Object
-
#read(docs, freqs) ⇒ Object
Not implemented.
-
#seek(term) ⇒ Object
Not implemented.
- #skip_to(target) ⇒ Object
Constructor Details
#initialize(reader, terms) ⇒ MultipleTermDocPosEnum
Creates a new MultipleTermPositions
instance.
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 24 def initialize(reader, terms) term_positions = [] terms.each do |term| term_positions << reader.term_positions_for(term) end @tps_queue = TermPositionsQueue.new(term_positions) @pos_list = [] end |
Instance Method Details
#close ⇒ Object
87 88 89 90 91 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 87 def close() while (tps = @tps_queue.pop()) tps.close() end end |
#doc ⇒ Object
79 80 81 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 79 def doc() return @doc end |
#freq ⇒ Object
83 84 85 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 83 def freq() return @freq end |
#next? ⇒ Boolean
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 35 def next? return false if (@tps_queue.size == 0) @pos_list.clear() @doc = @tps_queue.top.doc tps = nil begin tps = @tps_queue.top() tps.freq.times do |i| @pos_list << tps.next_position() end if tps.next? @tps_queue.adjust_top() else @tps_queue.pop() tps.close() end end while (@tps_queue.size > 0 and @tps_queue.top.doc == @doc) @pos_list.sort!() @freq = @pos_list.size return true end |
#next_position ⇒ Object
63 64 65 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 63 def next_position() return @pos_list.shift() end |
#read(docs, freqs) ⇒ Object
Not implemented.
- raises
-
NotImplementedError
101 102 103 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 101 def read(docs, freqs) raise NotImplementedError end |
#seek(term) ⇒ Object
Not implemented.
- raises
-
NotImplementedError
95 96 97 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 95 def seek(term) raise NotImplementedError end |
#skip_to(target) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/ferret/index/multiple_term_doc_pos_enum.rb', line 67 def skip_to(target) while (@tps_queue.top != nil and target > @tps_queue.top.doc) tps = @tps_queue.pop() if (tps.skip_to(target)) @tps_queue.push(tps) else tps.close() end end return next? end |