Sha256: f876f2032deb75dfc248e977d5a5561f9195d190b8168383249a7bedba13febc

Contents?: true

Size: 1.63 KB

Versions: 5

Compression:

Stored size: 1.63 KB

Contents

# Provides some helper methods for indexing compound or non-standard facets
#
# == 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

5 entries across 5 versions & 1 rubygems

Version Path
hydra-head-4.0.0 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.0.rc6 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.0.rc5 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.0.rc4 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.0.rc3 app/models/hydra/datastream/common_mods_index_methods.rb