class ActiveFedora::RDF::IndexingService
@see ActiveFedora::IndexingService
@see ActiveFedora::Indexing
given object.
Responsible for generating the solr document (via #generate_solr_document) of the
def add_assertions(prefix_method, solr_doc = {})
def add_assertions(prefix_method, solr_doc = {}) fields.each do |field_key, field_info| solr_field_key = solr_document_field_name(field_key, prefix_method) field_info.values.each do |val| append_to_solr_doc(solr_doc, solr_field_key, field_info, val) end end solr_doc end
def append_to_solr_doc(solr_doc, solr_field_key, field_info, val)
Solrizer.set_field(solr_doc, 'lcsh_subject_label', val.to_label, :searchable)
Solrizer.set_field(solr_doc, 'lcsh_subject_uri', val.to_uri, :symbol)
def append_to_solr_doc(solr_doc, field_key, field_info, val)
example:
Override this in order to allow one field to be expanded into more than one:
def append_to_solr_doc(solr_doc, solr_field_key, field_info, val) self.class.create_and_insert_terms(solr_field_key, solr_document_field_value(val), field_info.behaviors, solr_doc) end
def field_map_class
def field_map_class ActiveFedora::RDF::FieldMap end
def fields
def fields field_map_class.new do |field_map| index_config.each { |name, index_field_config| field_map.insert(name, index_field_config, object) } end end
def generate_solr_document(prefix_method = nil)
-
(Hash)
- the solr document
Other tags:
- Yield: - yields the solr document
def generate_solr_document(prefix_method = nil) solr_doc = add_assertions(prefix_method) yield(solr_doc) if block_given? solr_doc end
def index_config
def index_config object.class.index_config end
def initialize(obj)
-
obj
(#resource, #rdf_subject
) -- the object to build an solr document for. Its class must respond to 'properties'
def initialize(obj) @object = obj end
def resource
def resource object.resource end
def solr_document_field_name(field_key, prefix_method)
def solr_document_field_name(field_key, prefix_method) if prefix_method prefix_method.call(field_key) else field_key.to_s end end
def solr_document_field_value(val)
def solr_document_field_value(val) case val when ::RDF::URI val.to_s when ActiveTriples::Resource val.node? ? val.rdf_label : val.rdf_subject.to_s else val end end