diff --git a/geocoder/admin0/sql/indexes.sql b/geocoder/admin0/sql/indexes.sql new file mode 100644 index 0000000..90bf8b2 --- /dev/null +++ b/geocoder/admin0/sql/indexes.sql @@ -0,0 +1,8 @@ +-- create indexes on synonyms table +CREATE INDEX idx_admin0_synonyms_name_ ON admin0_synonyms (name_); +CREATE INDEX idx_admin0_synonyms_rank ON admin0_synonyms (rank); +CREATE INDEX idx_admin0_synonyms_name_rank ON admin0_synonyms (name_, rank); + +-- create indexes on polygon table +CREATE INDEX idx_ne_admin0_v3_adm0_a3 ON ne_admin0_v3 (adm0_a3); + diff --git a/geocoder/admin0/sql/triggers.sql b/geocoder/admin0/sql/triggers.sql new file mode 100644 index 0000000..1bc4880 --- /dev/null +++ b/geocoder/admin0/sql/triggers.sql @@ -0,0 +1,17 @@ +-- create trigger function. used in both admin1 and admin2 synonym tables +CREATE OR REPLACE FUNCTION alpha_numeric_identifiers() RETURNS trigger AS $alpha_numeric_identifiers$ + BEGIN + NEW.name_ := lower(regexp_replace(NEW.name, '[^A-z\u00C0-\u00ff]+', '', 'g')); + RETURN NEW; + END; +$alpha_numeric_identifiers$ LANGUAGE plpgsql; + +-- add trigger on admin0 synonym table name_ column +CREATE TRIGGER admin0_synonyms_name_update +BEFORE INSERT OR UPDATE OF name ON admin0_synonyms + FOR EACH ROW EXECUTE PROCEDURE alpha_numeric_identifiers() + +-- add trigger on admin1 synonym table name_ column +CREATE TRIGGER admin1_synonyms_name_update +BEFORE INSERT OR UPDATE OF name ON admin1_synonyms + FOR EACH ROW EXECUTE PROCEDURE alpha_numeric_identifiers() \ No newline at end of file