From 68d9a2111f6087a1377ff4bed8fa5a485fec4932 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 Signed-off-by: Dan Scott --- 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 a047e1e48f..a989a4fee2 100644 --- a/Open-ILS/src/sql/Pg/030.schema.metabib.sql +++ b/Open-ILS/src/sql/Pg/030.schema.metabib.sql @@ -1638,7 +1638,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 ) || @@ -1650,8 +1650,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.43.2