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

Version Path
hydra-mods-0.0.6 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-mods-0.0.5 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-mods-0.0.4 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-mods-0.0.3 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-mods-0.0.2 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-mods-0.0.1 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.3 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.2 app/models/hydra/datastream/common_mods_index_methods.rb
hydra-head-4.0.1 app/models/hydra/datastream/common_mods_index_methods.rb