Class: Ferret::Index::SegmentTermDocPosEnum

Inherits:
SegmentTermDocEnum show all
Defined in:
lib/ferret/index/term_doc_enum.rb

Instance Attribute Summary

Attributes inherited from SegmentTermDocEnum

#count, #deleted_docs, #df, #doc, #freq, #freq_stream, #parent

Instance Method Summary collapse

Methods inherited from SegmentTermDocEnum

#seek, #skip_to

Methods inherited from TermDocEnum

#doc, #freq, #seek, #skip_to

Constructor Details

#initialize(p) ⇒ SegmentTermDocPosEnum

Returns a new instance of SegmentTermDocPosEnum.



240
241
242
243
# File 'lib/ferret/index/term_doc_enum.rb', line 240

def initialize(p) 
  super
  @prox_stream = p.prox_stream.clone()
end

Instance Method Details

#closeObject



253
254
255
256
# File 'lib/ferret/index/term_doc_enum.rb', line 253

def close()
  super
  @prox_stream.close()
end

#do_seek(ti) ⇒ Object



245
246
247
248
249
250
251
# File 'lib/ferret/index/term_doc_enum.rb', line 245

def do_seek(ti)
  super
  if (ti != nil)
    @prox_stream.seek(ti.prox_pointer)
  end
  @prox_count = 0
end

#next?Boolean

Returns:

  • (Boolean)


267
268
269
270
271
272
273
274
275
276
# File 'lib/ferret/index/term_doc_enum.rb', line 267

def next?()
  @prox_count.times { @prox_stream.read_vint() }

  if (super)
    @prox_count = @freq    # note frequency
    @position = 0         # reset position
    return true
  end
  return false
end

#next_positionObject



258
259
260
261
# File 'lib/ferret/index/term_doc_enum.rb', line 258

def next_position()
  @prox_count -= 1
  return @position += @prox_stream.read_vint()
end

#read(docs, freqs) ⇒ Object

Raises:

  • (NotImplementedError)


278
279
280
# File 'lib/ferret/index/term_doc_enum.rb', line 278

def read(docs, freqs) 
  raise NotImplementedError, "TermDocPosEnum does not support processing multiple documents in one call. Use TermDocEnum instead."
end

#skip_prox(prox_pointer) ⇒ Object

Called by super.skipTo().



283
284
285
286
# File 'lib/ferret/index/term_doc_enum.rb', line 283

def skip_prox(prox_pointer)
  @prox_stream.seek(prox_pointer)
  @prox_count = 0
end

#skipping_docObject



263
264
265
# File 'lib/ferret/index/term_doc_enum.rb', line 263

def skipping_doc()
  @freq.times { @prox_stream.read_vint() }
end