diff --git a/app/importers/californica_mapper.rb b/app/importers/californica_mapper.rb index 004fd99b..bee54dd6 100644 --- a/app/importers/californica_mapper.rb +++ b/app/importers/californica_mapper.rb @@ -85,15 +85,7 @@ class CalifornicaMapper < Darlingtonia::HashMapper "Personal or Corporate Name.subject", "Subject.corporateName", "Subject.personalName", - "Subject name", - "Host", - "Name.host", - "Musician", - "Name.musician", - "Name.printer", - "Printer", - "Name.researcher", - "Researcher"], + "Subject name"], normalized_date: "Date.normalized", note: ["Note"], note_admin: ["AdminNote", "Description.adminnote", "Note.admin"], diff --git a/app/indexers/work_indexer.rb b/app/indexers/work_indexer.rb index 9442b999..b9a22e01 100644 --- a/app/indexers/work_indexer.rb +++ b/app/indexers/work_indexer.rb @@ -16,6 +16,7 @@ class WorkIndexer < Hyrax::WorkIndexer def generate_solr_document super.tap do |solr_doc| solr_doc['combined_subject_ssim'] = combined_subject + solr_doc['combined_names_ssim'] = combined_names add_dates(solr_doc) solr_doc['geographic_coordinates_ssim'] = coordinates solr_doc['human_readable_iiif_text_direction_ssi'] = human_readable_iiif_text_direction @@ -66,6 +67,16 @@ def combined_subject object.named_subject.to_a + object.subject.to_a + object.subject_topic.to_a + object.subject_geographic.to_a + object.subject_temporal.to_a end + def combined_names + %w[ + architect arranger artist author calligrapher cartographer collector commentator composer + creator director editor engraver host illuminator illustrator interviewee interviewer librettist + lyricist musician photographer printer printmaker producer recipient researcher rubricator scribe translator + ].sum do |field_name| + object.send(field_name).to_a + end + end + def coordinates return unless object.latitude.first && object.longitude.first [object.latitude.first, object.longitude.first].join(', ') diff --git a/spec/indexers/work_indexer_spec.rb b/spec/indexers/work_indexer_spec.rb index eabab369..7103e157 100644 --- a/spec/indexers/work_indexer_spec.rb +++ b/spec/indexers/work_indexer_spec.rb @@ -7,14 +7,16 @@ let(:indexer) { described_class.new(work) } - describe 'combined_subject' do + describe 'combined_subject and combined_names' do let(:attributes) do { ark: 'ark:/123/456', subject: ['Subject 1', 'Subject 2'], named_subject: ['Named Subject'], subject_topic: ['Subject Topic'], - subject_geographic: ['Subject Geographic'] + subject_geographic: ['Subject Geographic'], + architect: ['John Smith'], + artist: ['Jane Doe'] } end @@ -22,6 +24,10 @@ expect(solr_document['combined_subject_ssim']).to contain_exactly('Subject 1', 'Subject 2', 'Named Subject', 'Subject Topic', 'Subject Geographic') end + it 'combines the relevant names fields' do + expect(solr_document['combined_names_ssim']).to contain_exactly('John Smith', 'Jane Doe') + end + context 'When subject fields are missing' do let(:attributes) do { diff --git a/spec/uploaders/csv_manifest_validator_spec.rb b/spec/uploaders/csv_manifest_validator_spec.rb index 370d0bd6..d4637756 100644 --- a/spec/uploaders/csv_manifest_validator_spec.rb +++ b/spec/uploaders/csv_manifest_validator_spec.rb @@ -327,15 +327,6 @@ "Name.printer", "Researcher", "Name.researcher", - # adds these twice because they are also part of named_subject - "Host", - "Name.host", - "Musician", - "Name.musician", - "Printer", - "Name.printer", - "Researcher", - "Name.researcher", "Rights.statementLocal", "Related Records", "Edition",