Class: BaseIndexer::Solr::Writer

Inherits:
Object
  • Object
show all
Includes:
DiscoveryIndexer::Logging
Defined in:
lib/base_indexer/solr/writer.rb

Overview

Performs writes to solr client based upon true and false release flags

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#solr_targets_configsObject (readonly)

Returns the value of attribute solr_targets_configs.



8
9
10
# File 'lib/base_indexer/solr/writer.rb', line 8

def solr_targets_configs
  @solr_targets_configs
end

Instance Method Details

#get_connector_for_target(solr_target) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/base_indexer/solr/writer.rb', line 44

def get_connector_for_target(solr_target)
  solr_connector = nil
  if solr_targets_configs.keys.include?(solr_target)
    config = solr_targets_configs[solr_target]
    solr_connector = RSolr.connect(config.deep_symbolize_keys)
  end
  solr_connector
end

#process(id, index_doc, targets, targets_configs) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/base_indexer/solr/writer.rb', line 12

def process(id, index_doc, targets, targets_configs)
  @solr_targets_configs = targets_configs
  index_targets = targets.select { |_, b| b }.keys
  delete_targets = targets.reject { |_, b| b }.keys

  # get targets with true
  solr_index_client(id, index_doc, index_targets) if index_targets.present?
  # get targets with false
  solr_delete_client(id, delete_targets) if delete_targets.present?
end

#solr_delete_client(id, targets) ⇒ Object



37
38
39
40
41
42
# File 'lib/base_indexer/solr/writer.rb', line 37

def solr_delete_client(id, targets)
  targets.each do |solr_target|
    solr_connector = get_connector_for_target(solr_target)
    Client.delete(id, solr_connector) unless solr_connector.nil?
  end
end

#solr_delete_from_all(id, targets_configs) ⇒ Object



23
24
25
26
27
28
# File 'lib/base_indexer/solr/writer.rb', line 23

def solr_delete_from_all(id, targets_configs)
  # Get a list of all registered targets
  @solr_targets_configs = targets_configs
  targets = solr_targets_configs.keys
  solr_delete_client(id, targets)
end

#solr_index_client(id, index_doc, targets) ⇒ Object



30
31
32
33
34
35
# File 'lib/base_indexer/solr/writer.rb', line 30

def solr_index_client(id, index_doc, targets)
  targets.each do |solr_target|
    solr_connector = get_connector_for_target(solr_target)
    Client.add(id, index_doc, solr_connector) unless solr_connector.nil?
  end
end