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