From b9a2df07e0aa855fa9a6b3d377b16bb702e514b0 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Wed, 12 Jun 2013 11:17:08 -0400 Subject: [PATCH] Bring back "split-brain" indexing normalization Before 2.4-era changes to indexing and search, normalizers were applied in a way that resulted in different effects on the value and index_vector columns of metabib.*field_entry tables. This behavior was lost during the changes mentioned above, but we need it for several things to work properly, phrase search and (likely) facets among them. This commit brings that behavior back. See here for the original behavioral documentation: http://evergreen-ils.org/dokuwiki/doku.php?id=documentation:indexing#field_normalization_settings Signed-off-by: Mike Rylander --- Open-ILS/src/sql/Pg/030.schema.metabib.sql | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/sql/Pg/030.schema.metabib.sql b/Open-ILS/src/sql/Pg/030.schema.metabib.sql index e14c239678..ed26ff9192 100644 --- a/Open-ILS/src/sql/Pg/030.schema.metabib.sql +++ b/Open-ILS/src/sql/Pg/030.schema.metabib.sql @@ -1632,7 +1632,7 @@ BEGIN m.params AS params FROM config.index_normalizer n JOIN config.metabib_field_index_norm_map m ON (m.norm = n.id) - WHERE field = NEW.field + WHERE field = NEW.field AND m.pos < 0 ORDER BY m.pos LOOP EXECUTE 'SELECT ' || normalizer.func || '(' || quote_literal( value ) || @@ -1644,8 +1644,28 @@ BEGIN ')' INTO value; END LOOP; + NEW.value = value; - END IF; + + FOR normalizer IN + SELECT n.func AS func, + n.param_count AS param_count, + m.params AS params + FROM config.index_normalizer n + JOIN config.metabib_field_index_norm_map m ON (m.norm = n.id) + WHERE field = NEW.field AND m.pos >= 0 + ORDER BY m.pos LOOP + EXECUTE 'SELECT ' || normalizer.func || '(' || + quote_literal( value ) || + CASE + WHEN normalizer.param_count > 0 + THEN ',' || REPLACE(REPLACE(BTRIM(normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'') + ELSE '' + END || + ')' INTO value; + + END LOOP; + END IF; IF TG_TABLE_NAME::TEXT ~ 'browse_entry$' THEN value := ARRAY_TO_STRING( -- 2.11.0