module ActiveFedora::RDF::DatastreamIndexing

def apply_prefix(name, file_path)

def apply_prefix(name, file_path)
  prefix(file_path) + name.to_s
end

def indexing_service

def indexing_service
  @indexing_service ||= self.class.indexer.new(self)
end

def prefix_method(file_path)

Returns a function that takes field name and returns a solr document key
def prefix_method(file_path)
  ->(field_name) { apply_prefix(field_name, file_path) }
end

def primary_solr_name(field, file_path)

Gives the primary solr name for a column. If there is more than one indexer on the field definition, it gives the first
def primary_solr_name(field, file_path)
  config = self.class.config_for_term_or_uri(field)
  return nil unless config && config.behaviors # punt on index names for deep nodes!
  config.behaviors.each do |behavior|
    result = ActiveFedora.index_field_mapper.solr_name(apply_prefix(field, file_path), behavior, type: config.type)
    return result if Solrizer::DefaultDescriptors.send(behavior).evaluate_suffix(:text).stored?
  end
  raise RuntimeError "no stored fields were found"
end

def solrize_rdf_assertions(file_path, solr_doc = {})

Parameters:
  • solr_doc (Hash) -- @default an empty Hash
  • file_path (String) -- used to prefix the keys in the solr document
def solrize_rdf_assertions(file_path, solr_doc = {})
  solr_doc.merge! indexing_service.generate_solr_document(prefix_method(file_path))
end

def to_solr(solr_doc = {}, opts = {}) # :nodoc:

:nodoc:
def to_solr(solr_doc = {}, opts = {}) # :nodoc:
  super.tap do |new_doc|
    solrize_rdf_assertions(opts[:name], new_doc)
  end
end