Class: Linkage::ResultSet
- Inherits:
-
Object
- Object
- Linkage::ResultSet
- Defined in:
- lib/linkage/result_set.rb
Instance Method Summary (collapse)
- - (Object) add_group(group, dataset_id = nil)
- - (Object) add_match(record_1_id, record_2_id, total_score)
- - (Object) add_score(comparator_id, record_1_id, record_2_id, score)
- - (Object) create_tables!
- - (Object) database
- - (Object) flush!
- - (Object) get_group(index)
- - (Object) groups_dataset
- - (Object) groups_records_datasets(group)
-
- (ResultSet) initialize(config)
constructor
A new instance of ResultSet.
Constructor Details
- (ResultSet) initialize(config)
A new instance of ResultSet
3 4 5 6 7 |
# File 'lib/linkage/result_set.rb', line 3 def initialize(config) @config = config @next_group_id = 1 @next_group_mutex = Mutex.new end |
Instance Method Details
- (Object) add_group(group, dataset_id = nil)
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/linkage/result_set.rb', line 48 def add_group(group, dataset_id = nil) if @config.decollation_needed? original_values = group.values values = group.decollated_values if !@groups_buffer groups_headers = [:id] + values.keys @groups_buffer = ImportBuffer.new(database[@config.groups_table_name], groups_headers) original_groups_headers = [:id] + original_values.keys @original_groups_buffer = ImportBuffer.new( database[@config.original_groups_table_name], original_groups_headers) end group_id = next_group_id @groups_buffer.add([group_id] + values.values) @original_groups_buffer.add([group_id] + original_values.values) else # Non-DRY for minute speed improvements values = group.values if !@groups_buffer groups_headers = [:id] + values.keys @groups_buffer = ImportBuffer.new(database[@config.groups_table_name], groups_headers) end group_id = next_group_id @groups_buffer.add([group_id] + values.values) end end |
- (Object) add_match(record_1_id, record_2_id, total_score)
88 89 90 91 92 93 94 95 |
# File 'lib/linkage/result_set.rb', line 88 def add_match(record_1_id, record_2_id, total_score) if !@matches_buffer matches_headers = [:record_1_id, :record_2_id, :total_score] @matches_buffer = ImportBuffer.new(database[@config.matches_table_name], matches_headers) end @matches_buffer.add([record_1_id, record_2_id, total_score]) end |
- (Object) add_score(comparator_id, record_1_id, record_2_id, score)
79 80 81 82 83 84 85 86 |
# File 'lib/linkage/result_set.rb', line 79 def add_score(comparator_id, record_1_id, record_2_id, score) if !@scores_buffer scores_headers = [:comparator_id, :record_1_id, :record_2_id, :score] @scores_buffer = ImportBuffer.new(database[@config.scores_table_name], scores_headers) end @scores_buffer.add([comparator_id, record_1_id, record_2_id, score]) end |
- (Object) create_tables!
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/linkage/result_set.rb', line 21 def create_tables! if @config.groups_table_needed? schema = @config.groups_table_schema if @config.decollation_needed? database.create_table(@config.original_groups_table_name) do schema.each { |col| column(*col) } end end database.create_table(@config.groups_table_name) do schema.each { |col| column(*col) } end end if @config.scores_table_needed? schema = @config.scores_table_schema database.create_table(@config.scores_table_name) do schema.each { |col| column(*col) } end end schema = @config.matches_table_schema database.create_table(@config.matches_table_name) do schema.each { |col| column(*col) } end end |
- (Object) database
13 14 15 16 17 18 19 |
# File 'lib/linkage/result_set.rb', line 13 def database # FIXME: If the results database is the same as one of the datasets # being linked, there will be two connections to said database. This # could result in unexpected locking for non-concurrent databases (like # SQLite). @database ||= Sequel.connect(@config.results_uri, @config.) end |
- (Object) flush!
97 98 99 100 101 102 |
# File 'lib/linkage/result_set.rb', line 97 def flush! @groups_buffer.flush if @groups_buffer @original_groups_buffer.flush if @original_groups_buffer @scores_buffer.flush if @scores_buffer @matches_buffer.flush if @matches_buffer end |
- (Object) get_group(index)
104 105 106 107 |
# File 'lib/linkage/result_set.rb', line 104 def get_group(index) values = groups_dataset.order(:id).limit(1, index).first Group.from_row(values) end |
- (Object) groups_dataset
9 10 11 |
# File 'lib/linkage/result_set.rb', line 9 def groups_dataset @groups_dataset ||= Dataset.new(database[:groups]) end |
- (Object) groups_records_datasets(group)
109 110 111 112 |
# File 'lib/linkage/result_set.rb', line 109 def groups_records_datasets(group) datasets = @config.datasets_with_applied_simple_expectations datasets.collect! { |ds| ds.dataset_for_group(group) } end |