Sha256: b2a7a0b3989793cc729bcde5cb203e41298f759f6fc27c48d6472d25107fcac3

Contents?: true

Size: 934 Bytes

Versions: 11

Compression:

Stored size: 934 Bytes

Contents

module Segment::RangeIndex
  attr_accessor :corpus

  def [](*args)
    res = super(*args)
    SegID.setup(res, :corpus => corpus)
  end

  def self.index(segments, corpus = nil, persist_file = :memory)
    segments = segments.values.flatten if Hash === segments

    annotation_index = 
      Persist.persist("Segment_index", :fwt, :persist => (! (persist_file.nil? or persist_file == :memory)), :file => persist_file) do

        value_size = 0
        index_data = segments.collect{|segment| 
          next if segment.offset.nil?
          range = segment.range
          value_size = [segment.segid.length, value_size].max
          [segment.segid, [range.begin, range.end]]
        }.compact

        fwt = FixWidthTable.get :memory, value_size, true
        fwt.add_range index_data

        fwt
      end

    annotation_index.extend Segment::RangeIndex
    annotation_index.corpus = corpus
    annotation_index
  end

end
  

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rbbt-text-1.5.2 lib/rbbt/segment/range_index.rb
rbbt-text-1.5.1 lib/rbbt/segment/range_index.rb
rbbt-text-1.5.0 lib/rbbt/segment/range_index.rb
rbbt-text-1.4.0 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.11 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.10 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.9 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.8 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.7 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.6 lib/rbbt/segment/range_index.rb
rbbt-text-1.3.5 lib/rbbt/segment/range_index.rb