From: Galen Charlton Date: Fri, 17 Feb 2017 21:40:02 +0000 (-0500) Subject: LP#1662541: several new subject browse index definitions X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=2e0e3feba72d2d871fb12e02a2725de46353bcba;p=contrib%2FConifer.git LP#1662541: several new subject browse index definitions This patch adds several config.metabib_field definitions that are specifically for subject browses: subject / topic_browse subject / geographic_browse subject / temporal_browse These new definitions index the entire heading as a unit, so a heading like this: =650 \0$aCats$zUnited States$vCorrespondence. will end up in the subject/topic_browse index as a single entry for Cats -- United States -- Correspondence rather than separate browse entries for "Cats" as a subject/topic, and "United States" as a subject/geographic. Since the new *_browse indexes are meant to replace the browse functions of the existing subject/topic, subject/geographic, and subject/temporal indexes, the browse flag is turned off for the older definitions. This patch intentionally does not include an entry for subject/name_browse, as additional coding would be required to get the display form of the heading to be punctuated correctly. To test ------- [1] After applying the patch, perform subject browses in the OPAC and staff interfaces and verify that fully composed headings from bib records are now displayed as browse entries. Signed-off-by: Galen Charlton Signed-off-by: Kathy Lussier --- diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index f831fc9f63..d294365374 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -136,14 +136,14 @@ INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_xpath, facet_field, authority_xpath, browse_xpath ) VALUES (10, 'author', 'other', oils_i18n_gettext(10, 'Other Author', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:name[@type='personal' and not(mods32:role/mods32:roleTerm[text()='creator'])]$$, $$//*[local-name()='namePart']$$, TRUE, '//@xlink:href',$$//*[local-name()='namePart']$$ ); -- /* to fool vim */; -INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath ) VALUES - (11, 'subject', 'geographic', oils_i18n_gettext(11, 'Geographic Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:geographic$$, TRUE, '//@xlink:href' ); +INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath, browse_field ) VALUES + (11, 'subject', 'geographic', oils_i18n_gettext(11, 'Geographic Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:geographic$$, TRUE, '//@xlink:href', FALSE ); INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_xpath, facet_field, authority_xpath ) VALUES (12, 'subject', 'name', oils_i18n_gettext(12, 'Name Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:name$$, $$//*[local-name()='namePart']$$, TRUE, '//@xlink:href' ); -- /* to fool vim */; -INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath ) VALUES - (13, 'subject', 'temporal', oils_i18n_gettext(13, 'Temporal Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:temporal$$, TRUE, '//@xlink:href' ); -INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath ) VALUES - (14, 'subject', 'topic', oils_i18n_gettext(14, 'Topic Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:topic$$, TRUE, '//@xlink:href' ); +INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath, browse_field ) VALUES + (13, 'subject', 'temporal', oils_i18n_gettext(13, 'Temporal Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:temporal$$, TRUE, '//@xlink:href', FALSE ); +INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, facet_field, authority_xpath, browse_field ) VALUES + (14, 'subject', 'topic', oils_i18n_gettext(14, 'Topic Subject', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:subject/mods32:topic$$, TRUE, '//@xlink:href', FALSE ); --INSERT INTO config.metabib_field ( id, field_class, name, format, xpath ) VALUES -- ( id, field_class, name, xpath ) VALUES ( 'subject', 'genre', 'mods32', $$//mods32:mods/mods32:genre$$ ); INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, browse_field ) VALUES @@ -189,6 +189,29 @@ INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, UPDATE config.metabib_field SET joiner = ' -- ' WHERE field_class = 'subject' AND name NOT IN ('name', 'complete'); +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (34, 'subject', 'topic_browse', oils_i18n_gettext(34, 'Topic Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "topic"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (35, 'subject', 'geographic_browse', oils_i18n_gettext(35, 'Geographic Name Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "geographic"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (36, 'subject', 'temporal_browse', oils_i18n_gettext(36, 'Temporal Term Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "temporal"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field_index_norm_map (field,norm) + SELECT m.id, + i.id + FROM config.metabib_field m, + config.index_normalizer i + WHERE i.func IN ('naco_normalize') + AND m.id IN (34, 35, 36); + SELECT SETVAL('config.metabib_field_id_seq', GREATEST(1000, (SELECT MAX(id) FROM config.metabib_field))); INSERT INTO config.metabib_search_alias (alias,field_class) VALUES ('kw','keyword'); @@ -13230,19 +13253,19 @@ INSERT INTO authority.control_set_bib_field_metabib_field_map (bib_field, metabi SELECT DISTINCT b.id AS bib_field, m.id AS metabib_field FROM authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m - WHERE a.tag = '148' AND m.name = 'temporal' + WHERE a.tag = '148' AND m.name = 'temporal_browse' UNION SELECT DISTINCT b.id AS bib_field, m.id AS metabib_field FROM authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m - WHERE a.tag = '150' AND m.name = 'topic' + WHERE a.tag = '150' AND m.name = 'topic_browse' UNION SELECT DISTINCT b.id AS bib_field, m.id AS metabib_field FROM authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m - WHERE a.tag = '151' AND m.name = 'geographic' + WHERE a.tag = '151' AND m.name = 'geographic_browse' UNION diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.subject_browse.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.subject_browse.sql new file mode 100644 index 0000000000..be6981d215 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.subject_browse.sql @@ -0,0 +1,58 @@ +BEGIN; + +-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); + +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (34, 'subject', 'topic_browse', oils_i18n_gettext(34, 'Topic Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "topic"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (35, 'subject', 'geographic_browse', oils_i18n_gettext(35, 'Geographic Name Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "geographic"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field ( id, field_class, name, label, + format, xpath, search_field, browse_field, authority_xpath, joiner ) VALUES + (36, 'subject', 'temporal_browse', oils_i18n_gettext(36, 'Temporal Term Browse', 'cmf', 'label'), + 'mods32', $$//mods32:mods/mods32:subject[local-name(./*[1]) = "temporal"]$$, FALSE, TRUE, '//@xlink:href', ' -- ' ); -- /* to fool vim */; + +INSERT INTO config.metabib_field_index_norm_map (field,norm) + SELECT m.id, + i.id + FROM config.metabib_field m, + config.index_normalizer i + WHERE i.func IN ('naco_normalize') + AND m.id IN (34, 35, 36); + +UPDATE config.metabib_field +SET browse_field = FALSE +WHERE field_class = 'subject' AND name = 'topic' +AND id = 14; +UPDATE config.metabib_field +SET browse_field = FALSE +WHERE field_class = 'subject' AND name = 'geographic' +AND id = 13; +UPDATE config.metabib_field +SET browse_field = FALSE +WHERE field_class = 'subject' AND name = 'temporal' +AND id = 11; + +UPDATE authority.control_set_bib_field_metabib_field_map +SET metabib_field = 34 +WHERE metabib_field = 14; +UPDATE authority.control_set_bib_field_metabib_field_map +SET metabib_field = 35 +WHERE metabib_field = 13; +UPDATE authority.control_set_bib_field_metabib_field_map +SET metabib_field = 36 +WHERE metabib_field = 11; + +COMMIT; + +\qecho This is a browse-only reingest of your bib records. It may take a while. +\qecho You may cancel now without losing the effect of the rest of the +\qecho upgrade script, and arrange the reingest later. +\qecho . +SELECT metabib.reingest_metabib_field_entries(id, TRUE, FALSE, TRUE) + FROM biblio.record_entry;