LP#1986086 - Include Guardian data in name keyword index user/stompro/lp1986086_add_guardian_name_keyword
authorJosh Stompro <stompro@stompro.org>
Fri, 12 Aug 2022 16:17:30 +0000 (11:17 -0500)
committerJosh Stompro <stompro@stompro.org>
Fri, 12 Aug 2022 17:53:19 +0000 (12:53 -0500)
Add the au.guardian field data into the name keyword index to
allow easier access to the guardian data.

Signed-off-by: Josh Stompro <stompro@stompro.org>
Open-ILS/src/sql/Pg/005.schema.actors.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.name-keyword-parent-guardian.sql [new file with mode: 0644]

index b18a33c..a6bd730 100644 (file)
@@ -181,7 +181,9 @@ BEGIN
         COALESCE(NEW.pref_family_name, '')       || ' ' || 
         COALESCE(evergreen.unaccent_and_squash(NEW.pref_family_name), '') || ' ' || 
         COALESCE(NEW.pref_suffix, '')            || ' ' || 
-        COALESCE(NEW.name_keywords, '')
+        COALESCE(NEW.name_keywords, '')          || ' ' ||
+        COALESCE(NEW.guardian, '')               || ' ' ||
+        COALESCE(evergreen.unaccent_and_squash(NEW.guardian), '')
     );
     RETURN NEW;
 END;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.name-keyword-parent-guardian.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.name-keyword-parent-guardian.sql
new file mode 100644 (file)
index 0000000..00da540
--- /dev/null
@@ -0,0 +1,53 @@
+BEGIN;
+
+--SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
+
+-- Update keyword indexes for existing patrons that have guardian data
+
+UPDATE actor.usr SET name_kw_tsvector = 
+    TO_TSVECTOR(
+        COALESCE(prefix, '') || ' ' || 
+        COALESCE(first_given_name, '') || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(first_given_name), '') || ' ' || 
+        COALESCE(second_given_name, '') || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(second_given_name), '') || ' ' || 
+        COALESCE(family_name, '') || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(family_name), '') || ' ' || 
+        COALESCE(suffix, '') || ' ' ||
+        COALESCE(name_keywords, '')  || ' ' ||
+        COALESCE(guardian, '') || ' ' ||
+        COALESCE(evergreen.unaccent_and_squash(guardian), '')
+    )
+WHERE
+(guardian is not null or guardian != '')
+;
+
+CREATE OR REPLACE FUNCTION actor.user_ingest_name_keywords() 
+    RETURNS TRIGGER AS $func$
+BEGIN
+    NEW.name_kw_tsvector := TO_TSVECTOR(
+        COALESCE(NEW.prefix, '')                || ' ' || 
+        COALESCE(NEW.first_given_name, '')      || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.first_given_name), '') || ' ' || 
+        COALESCE(NEW.second_given_name, '')     || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.second_given_name), '') || ' ' || 
+        COALESCE(NEW.family_name, '')           || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.family_name), '') || ' ' || 
+        COALESCE(NEW.suffix, '')                || ' ' || 
+        COALESCE(NEW.pref_prefix, '')            || ' ' || 
+        COALESCE(NEW.pref_first_given_name, '')  || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.pref_first_given_name), '') || ' ' || 
+        COALESCE(NEW.pref_second_given_name, '') || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.pref_second_given_name), '') || ' ' || 
+        COALESCE(NEW.pref_family_name, '')       || ' ' || 
+        COALESCE(evergreen.unaccent_and_squash(NEW.pref_family_name), '') || ' ' || 
+        COALESCE(NEW.pref_suffix, '')            || ' ' || 
+        COALESCE(NEW.name_keywords, '')          || ' ' ||
+        COALESCE(NEW.guardian, '')               || ' ' ||
+        COALESCE(evergreen.unaccent_and_squash(NEW.guardian), '')
+    );
+    RETURN NEW;
+END;
+$func$ LANGUAGE PLPGSQL;
+
+COMMIT;