lib/active_fedora/base.rb in active-fedora-1.2.9 vs lib/active_fedora/base.rb in active-fedora-2.0.0
- old
+ new
@@ -845,17 +845,17 @@
ds.to_xml(fields_xml) if ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) || ds.kind_of?(ActiveFedora::RelsExtDatastream)
end
return xml.to_s
end
- # Return a Solr::Document version of this object.
- # @solr_doc (optional) Solr::Document to insert the fields into
+ # Return a Hash representation of this object where keys in the hash are appropriate Solr field names.
+ # @solr_doc (optional) Hash to insert the fields into
# @opts (optional) Hash
# If opts[:model_only] == true, the base object metadata and the RELS-EXT datastream will be omitted. This is mainly to support shelver, which calls .to_solr for each model an object subscribes to.
- def to_solr(solr_doc = Solr::Document.new, opts={})
+ def to_solr(solr_doc = Hash.new, opts={})
unless opts[:model_only]
- solr_doc << {SOLR_DOCUMENT_ID.to_sym => pid, ActiveFedora::SolrService.solr_name(:system_create, :date) => self.create_date, ActiveFedora::SolrService.solr_name(:system_modified, :date) => self.modified_date, ActiveFedora::SolrService.solr_name(:active_fedora_model, :symbol) => self.class.inspect}
+ solr_doc.merge!(SOLR_DOCUMENT_ID.to_sym => pid, ActiveFedora::SolrService.solr_name(:system_create, :date) => self.create_date, ActiveFedora::SolrService.solr_name(:system_modified, :date) => self.modified_date, ActiveFedora::SolrService.solr_name(:active_fedora_model, :symbol) => self.class.inspect)
end
datastreams.each_value do |ds|
# solr_doc = ds.to_solr(solr_doc) if ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) ||( ds.kind_of?(ActiveFedora::RelsExtDatastream) || ( ds.kind_of?(ActiveFedora::QualifiedDublinCoreDatastream) && !opts[:model_only] )
solr_doc = ds.to_solr(solr_doc) if ds.kind_of?(ActiveFedora::MetadataDatastream) || ds.kind_of?(ActiveFedora::NokogiriDatastream) || ( ds.kind_of?(ActiveFedora::RelsExtDatastream) && !opts[:model_only] )
end
@@ -864,9 +864,10 @@
rescue
logger.info("Error encountered trying to output solr_doc details for pid: #{pid}")
end
return solr_doc
end
+
# ** EXPERIMENTAL **
#
# This method can be used instead of ActiveFedora::Model::ClassMethods.load_instance.
# It works similarly except it populates an object from Solr instead of Fedora.