class SearchSolrTools::Harvesters::AutoSuggest

Use the nsidc_oai core to populate the auto_suggest core

Public Class Methods

new(env = 'development', die_on_failure: false) click to toggle source
Calls superclass method
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 11
def initialize(env = 'development', die_on_failure: false)
  super
  @env_settings = SolrEnvironments[@environment] # super sets @environment.
end

Private Instance Methods

add_documents_to_solr(add_docs) click to toggle source
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 50
def add_documents_to_solr(add_docs)
  status = insert_solr_doc add_docs, Base::JSON_CONTENT_TYPE, @env_settings[:auto_suggest_collection_name]

  if status == Helpers::HarvestStatus::INGEST_OK
    logger.info "Added #{add_docs.size} auto suggest documents in one commit"
    Helpers::HarvestStatus.new(Helpers::HarvestStatus::INGEST_OK => add_docs)
  else
    logger.error "Failed adding #{add_docs.size} documents in single commit, retrying one by one"
    new_add_docs = []
    add_docs.each do |doc|
      new_add_docs << { 'add' => { 'doc' => doc } }
    end
    insert_solr_docs new_add_docs, Base::JSON_CONTENT_TYPE, @env_settings[:auto_suggest_collection_name]
  end
end
fetch_auto_suggest_facet_data(url, fields) click to toggle source
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 30
def fetch_auto_suggest_facet_data(url, fields)
  fields.each do |name, _config|
    url += "&facet.field=#{name}"
  end

  serialized_facet_response = RestClient.get url
  JSON.parse(serialized_facet_response)
end
generate_add_hashes(facet_response, fields) click to toggle source
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 39
def generate_add_hashes(facet_response, fields)
  add_docs = []
  facet_response['facet_counts']['facet_fields'].each do |facet_name, facet_values|
    facet_values.each_slice(2) do |facet_value|
      new_docs = fields[facet_name][:creator].call(facet_value[0], facet_value[1], fields[facet_name][:weight], fields[facet_name][:source])
      add_docs.concat(new_docs)
    end
  end
  add_docs
end
harvest(url, fields) click to toggle source
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 18
def harvest(url, fields)
  facet_response = fetch_auto_suggest_facet_data(url, fields)
  add_docs = generate_add_hashes(facet_response, fields)
  add_documents_to_solr(add_docs)
end
standard_add_creator(value, count, field_weight, source) click to toggle source
# File lib/search_solr_tools/harvesters/auto_suggest.rb, line 24
def standard_add_creator(value, count, field_weight, source)
  count_weight = count <= 1 ? 0.4 : Math.log(count)
  weight = field_weight * count_weight
  [{ 'id' => "#{source}:#{value}", 'text_suggest' => value, 'source' => source, 'weight' => weight }]
end