class ActiveFedora::IndexingService

Responsible for generating the solr document (via generate_solr_document) of the given object.

@see ActiveFedora::Indexing @see ActiveFedora::RDF::IndexingService

Attributes

object[R]

Public Class Methods

create_time_solr_name() click to toggle source
# File lib/active_fedora/indexing_service.rb, line 18
def self.create_time_solr_name
  @create_time_solr_name ||= ActiveFedora.index_field_mapper.solr_name('system_create', :stored_sortable, type: :date)
end
modified_time_solr_name() click to toggle source
# File lib/active_fedora/indexing_service.rb, line 22
def self.modified_time_solr_name
  @modified_time_solr_name ||= ActiveFedora.index_field_mapper.solr_name('system_modified', :stored_sortable, type: :date)
end
new(obj) click to toggle source

@param [#create_date, modified_date, has_model, id, to_json, attached_files, []] obj The class of obj must respond to these methods:

inspect
outgoing_reflections
# File lib/active_fedora/indexing_service.rb, line 14
def initialize(obj)
  @object = obj
end

Public Instance Methods

generate_solr_document() { |solr_doc| ... } click to toggle source

Creates a solr document hash for the {#object} @yield [Hash] yields the solr document @return [Hash] the solr document

# File lib/active_fedora/indexing_service.rb, line 33
def generate_solr_document
  solr_doc = {}
  ActiveFedora.index_field_mapper.set_field(solr_doc, 'system_create', c_time, :stored_sortable)
  ActiveFedora.index_field_mapper.set_field(solr_doc, 'system_modified', m_time, :stored_sortable)
  solr_doc[QueryResultBuilder::HAS_MODEL_SOLR_FIELD] = object.has_model
  solr_doc[ActiveFedora.id_field.to_sym] = object.id
  object.declared_attached_files.each do |name, file|
    solr_doc.merge! file.to_solr(solr_doc, name: name.to_s)
  end
  solr_doc = solrize_rdf_assertions(solr_doc)
  yield(solr_doc) if block_given?
  solr_doc
end
rdf_service() click to toggle source
# File lib/active_fedora/indexing_service.rb, line 26
def rdf_service
  RDF::IndexingService
end

Protected Instance Methods

c_time() click to toggle source
# File lib/active_fedora/indexing_service.rb, line 49
def c_time
  c_time = object.create_date.presence || DateTime.now
  c_time = DateTime.parse(c_time) unless c_time.is_a?(DateTime)
  c_time
end
m_time() click to toggle source
# File lib/active_fedora/indexing_service.rb, line 55
def m_time
  m_time = object.modified_date.presence || DateTime.now
  m_time = DateTime.parse(m_time) unless m_time.is_a?(DateTime)
  m_time
end
rdf_indexer() click to toggle source

@return IndexingService

# File lib/active_fedora/indexing_service.rb, line 68
def rdf_indexer
  rdf_service.new(object, object.class.index_config)
end
solrize_rdf_assertions(solr_doc = {}) click to toggle source

Serialize the resource’s RDF relationships to solr @param [Hash] solr_doc @deafult an empty Hash

# File lib/active_fedora/indexing_service.rb, line 63
def solrize_rdf_assertions(solr_doc = {})
  solr_doc.merge rdf_indexer.generate_solr_document
end