From c96dcd5acf4da1e85f731c87c19f5c02c2474e13 Mon Sep 17 00:00:00 2001 From: Samuel Sciolla Date: Fri, 26 Jun 2026 09:52:08 -0400 Subject: [PATCH 1/2] Add draft of possible overriding solution for genreform handling --- config/traject/ead2_config.rb | 26 +++++++++++++++++++++++++ spec/config/traject/ead2_config_spec.rb | 11 +++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/config/traject/ead2_config.rb b/config/traject/ead2_config.rb index ea6b16f..ed2e12c 100644 --- a/config/traject/ead2_config.rb +++ b/config/traject/ead2_config.rb @@ -1,5 +1,9 @@ # frozen_string_literal: true +def remove_to_field_def(field_name) + instance_variable_get(:@index_steps).reject! { |f| f.instance_variable_get(:@field_name) == field_name } +end + # Load the arclight gem's default EAD2 traject configuration first. # All additions and modifications below are kept separate from the upstream defaults. load_config_file Arclight::Engine.root.join("lib/arclight/traject/ead2_config.rb").to_s @@ -8,3 +12,25 @@ # Boxrunner-specific additions / overrides # ========================================== +# Utilize genreform for Formats facet + +remove_to_field_def "access_subjects_ssim" +remove_to_field_def "access_subjects_ssm" + +to_field "access_subjects_ssim", extract_xpath("/ead/archdesc/controlaccess", to_text: false) do |_record, accumulator| + accumulator.map! do |element| + %w[subject function occupation].map do |selector| + element.xpath(".//#{selector}").map(&:text) + end + end.flatten! + p accumulator +end + +to_field "access_subjects_ssm" do |_record, accumulator, context| + accumulator.concat Array.wrap(context.output_hash["access_subjects_ssim"]) +end + +to_field "formats_ssim", extract_xpath("/ead/archdesc/controlaccess/genreform|/ead/archdesc/controlaccess/controlaccess/genreform") +to_field "formats_ssm" do |_record, accumulator, context| + accumulator.concat Array.wrap(context.output_hash["formats_ssim"]) +end diff --git a/spec/config/traject/ead2_config_spec.rb b/spec/config/traject/ead2_config_spec.rb index 02e39c3..8cf3564 100644 --- a/spec/config/traject/ead2_config_spec.rb +++ b/spec/config/traject/ead2_config_spec.rb @@ -133,14 +133,21 @@ it "maps access_subjects_ssim from controlaccess subjects" do expect(result["access_subjects_ssim"]).to include "Women in science." expect(result["access_subjects_ssim"]).to include "Women engineers." + expect(result["access_subjects_ssim"]).to_not include "Digital file formats." end it "maps access_subjects_ssm from access_subjects_ssim" do expect(result["access_subjects_ssm"]).to eq result["access_subjects_ssim"] end + end + + describe "formats" do + it "maps genreform to formats_ssim" do + expect(result["formats_ssim"]).to include "Digital file formats." + end - it "maps genreform_ssim from controlaccess" do - expect(result["genreform_ssim"]).to include "Photographs." + it "maps formats_ssim to formats_ssm" do + expect(result["formats_ssim"]).to eq result["formats_ssm"] end end From 64b9c924a106e39d8f072ff3a16171c164173607 Mon Sep 17 00:00:00 2001 From: Samuel Sciolla Date: Fri, 26 Jun 2026 09:59:06 -0400 Subject: [PATCH 2/2] Remove p statement --- config/traject/ead2_config.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/traject/ead2_config.rb b/config/traject/ead2_config.rb index ed2e12c..89331c1 100644 --- a/config/traject/ead2_config.rb +++ b/config/traject/ead2_config.rb @@ -23,7 +23,6 @@ def remove_to_field_def(field_name) element.xpath(".//#{selector}").map(&:text) end end.flatten! - p accumulator end to_field "access_subjects_ssm" do |_record, accumulator, context|