Sha256: 148b735e578b7dac71f94e64a145d5018c80358ea06c38084389fadfbf4aaa25

Contents?: true

Size: 1.65 KB

Versions: 5

Compression:

Stored size: 1.65 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::CommonModsIndexMethods

  def self.included(base)
    ActiveSupport::Deprecation.warn("Hydra::CommonModsIndexMethods has been deprecated. Use Hydra::Datastream::CommonModsIndexMethods instead")
  end

  # 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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hydra-head-4.0.0 lib/hydra/common_mods_index_methods.rb
hydra-head-4.0.0.rc6 lib/hydra/common_mods_index_methods.rb
hydra-head-4.0.0.rc5 lib/hydra/common_mods_index_methods.rb
hydra-head-4.0.0.rc4 lib/hydra/common_mods_index_methods.rb
hydra-head-4.0.0.rc3 lib/hydra/common_mods_index_methods.rb