Sha256: 4c29400ace40313474e0480992e1ac2d95e98d239f01081ded4fa1ddb6ed1359
Contents?: true
Size: 1.75 KB
Versions: 9
Compression:
Stored size: 1.75 KB
Contents
# Provides some helper methods for indexing compound or non-standard facets # # this code will move to lib/hydra/datastream/mods_name_behavior.rb (with the appropriate namespace changes) in Hydra 5.0 # # == Methods # # extract_person_full_names # This method returns a Hash of person_full_name_facet values which combine Lastname, Firstname # extract_person_organizations # This method returns a Hash of person_full_name_facet values which extract the persons affiliation and puts it in an mods_organization_facet module Hydra module Datastream module CommonModsIndexMethods # Extracts the first and last names of persons and creates Solr::Field objects with for person_full_name_facet # # == Returns: # An array of Solr::Field objects # def extract_person_full_names names = {} self.find_by_terms(:person).each do |person| name_parts = person.children.inject({}) do |hash,child| hash[child.get_attribute(:type)] = child.text if ["family","given"].include? child.get_attribute(:type) hash end ::Solrizer::Extractor.insert_solr_field_value(names, "person_full_name_facet", [name_parts["family"], name_parts["given"]].join(", ") ) if name_parts.keys.sort == ["family","given"] names end return names end # Extracts the affiliations of persons and creates Solr::Field objects for them # # == Returns: # An array of Solr::Field objects # def extract_person_organizations orgs = {} self.find_by_terms(:person,:affiliation).each do |org| ::Solrizer::Extractor.insert_solr_field_value(orgs, "mods_organization_facet", org.text) end return orgs end end end end
Version data entries
9 entries across 9 versions & 2 rubygems