Index corporate authors based on relator codes
authorDan Scott <dscott@laurentian.ca>
Tue, 30 Oct 2012 16:08:54 +0000 (12:08 -0400)
committerBen Shum <bshum@biblio.org>
Sun, 23 Dec 2012 20:34:54 +0000 (15:34 -0500)
The existing stock index for corporate authors only kicks in if the
710 subfield 'e' == 'creator', but relator codes (in subfield '4') are
by many accounts a preferred mode of identifying the relationship of an
added entry. Thus, add '4' == ('aut' or 'cre') to the criteria for
indexing a corporate author.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.index_corporate_authors.sql [new file with mode: 0644]

index e89a2e8..9f2c2f2 100644 (file)
@@ -123,7 +123,7 @@ INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath )
     (6, 'title', 'proper', oils_i18n_gettext(6, 'Title Proper', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:titleNonfiling[mods32:title and not (@type)]$$ );
 
 INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_xpath, facet_field ) VALUES 
-    (7, 'author', 'corporate', oils_i18n_gettext(7, 'Corporate Author', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:name[@type='corporate' and mods32:role/mods32:roleTerm[text()='creator']]$$, $$//*[local-name()='namePart']$$, TRUE ); -- /* to fool vim */;
+    (7, 'author', 'corporate', oils_i18n_gettext(7, 'Corporate Author', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:name[@type='corporate' and (mods32:role/mods32:roleTerm[text()='creator'] or mods32:role/mods32:roleTerm[text()='aut'] or mods32:role/mods32:roleTerm[text()='cre'])]$$, $$//*[local-name()='namePart']$$, TRUE ); -- /* to fool vim */;
 INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_xpath, facet_field ) VALUES 
     (8, 'author', 'personal', oils_i18n_gettext(8, 'Personal Author', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:name[@type='personal' and mods32:role/mods32:roleTerm[text()='creator']]$$, $$//*[local-name()='namePart']$$, TRUE ); -- /* to fool vim */;
 INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_xpath, facet_field ) VALUES 
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.index_corporate_authors.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.index_corporate_authors.sql
new file mode 100644 (file)
index 0000000..ff41992
--- /dev/null
@@ -0,0 +1,18 @@
+-- Use MARC relator codes (710 subfield 4) to index corporate authors, along
+-- with the existing relator text (710 subfield e)
+
+UPDATE config.metabib_field
+  SET xpath = $$//mods32:mods/mods32:name[@type='corporate'
+    and (mods32:role/mods32:roleTerm[text()='creator']
+      or mods32:role/mods32:roleTerm[text()='aut']
+      or mods32:role/mods32:roleTerm[text()='cre']
+    )]$$
+  WHERE id = 7
+;
+
+SELECT metabib.reingest_metabib_field_entries(record, TRUE, TRUE, FALSE)
+  FROM metabib.full_rec
+  WHERE tag = '710'
+    AND subfield = '4'
+    AND value IN ('cre', 'aut')
+;