Class: Ferret::Index::MultiTermEnum
- Defined in:
- lib/ferret/index/multi_reader.rb
Instance Attribute Summary collapse
-
#doc_freq ⇒ Object
readonly
Returns the value of attribute doc_freq.
-
#term ⇒ Object
readonly
Returns the value of attribute term.
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(readers, starts, t) ⇒ MultiTermEnum
constructor
A new instance of MultiTermEnum.
- #next? ⇒ Boolean
Methods inherited from TermEnum
Constructor Details
#initialize(readers, starts, t) ⇒ MultiTermEnum
Returns a new instance of MultiTermEnum.
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/ferret/index/multi_reader.rb', line 196 def initialize(readers, starts, t) @queue = SegmentMergeQueue.new(readers.length) readers.each_index do |i| reader = readers[i] term_enum = nil if (t != nil) term_enum = reader.terms_from(t) else term_enum = reader.terms() end smi = SegmentMergeInfo.new(starts[i], term_enum, reader) if (t == nil and smi.next?) or term_enum.term @queue.push(smi); # initialize queue else smi.close() end end if (t != nil and @queue.size() > 0) next?() end end |
Instance Attribute Details
#doc_freq ⇒ Object (readonly)
Returns the value of attribute doc_freq.
194 195 196 |
# File 'lib/ferret/index/multi_reader.rb', line 194 def doc_freq @doc_freq end |
#term ⇒ Object (readonly)
Returns the value of attribute term.
194 195 196 |
# File 'lib/ferret/index/multi_reader.rb', line 194 def term @term end |
Instance Method Details
#close ⇒ Object
243 244 245 |
# File 'lib/ferret/index/multi_reader.rb', line 243 def close() @queue.close() end |
#next? ⇒ Boolean
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# File 'lib/ferret/index/multi_reader.rb', line 220 def next?() top = @queue.top() if (top == nil) @term = nil return false end @term = top.term @doc_freq = 0 while top and @term == top.term @queue.pop() @doc_freq += top.term_enum.doc_freq() # increment freq if (top.next?) @queue.push(top) # restore queue else top.close() # done with a segment end top = @queue.top() end return true end |