diff --git a/geocoder/setup/admin0/indexes.sql b/geocoder/setup/admin0/indexes.sql new file mode 100644 index 0000000..1f3df1e --- /dev/null +++ b/geocoder/setup/admin0/indexes.sql @@ -0,0 +1,10 @@ +-- create indexes on synonyms table +CREATE INDEX idx_admin0_synonyms_name_patt ON admin0_synonyms (name_ text_pattern_ops); +--CREATE INDEX idx_admin0_synonyms_name ON admin0_synonyms (lower(regexp_replace(name, '\W+'::text, ''::text))); +CREATE INDEX idx_admin0_synonyms_name_ ON admin0_synonyms (name_); +--CREATE INDEX idx_admin0_synonyms_nam 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 UNIQUE INDEX idx_ne_admin0_v3_adm0_a3 ON ne_admin0_v3 (adm0_a3); diff --git a/geocoder/setup/admin0/response-types.sql b/geocoder/setup/admin0/response-types.sql new file mode 100644 index 0000000..f93da39 --- /dev/null +++ b/geocoder/setup/admin0/response-types.sql @@ -0,0 +1,4 @@ +-- Response types for admin0 geocoder +CREATE TYPE geocode_admin_v1 AS (q TEXT, geom GEOMETRY, success BOOLEAN); +CREATE TYPE synonym_lookup_v1 AS (q TEXT, s TEXT); +--CREATE TYPE synonym_lookup_v1 AS (q TEXT, adm0_a3 TEXT); diff --git a/geocoder/setup/admin0/triggers.sql b/geocoder/setup/admin0/triggers.sql new file mode 100644 index 0000000..539f1bf --- /dev/null +++ b/geocoder/setup/admin0/triggers.sql @@ -0,0 +1,12 @@ +-- create trigger function. used in both admin0 and admin1 synonym tables +CREATE OR REPLACE FUNCTION alpha_numeric_identifiers() RETURNS trigger AS $alpha_numeric_identifiers$ + BEGIN + NEW.name_ := lower(regexp_replace(NEW.name, '[^a-zA-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() diff --git a/geocoder/setup/admin1/indexes.sql b/geocoder/setup/admin1/indexes.sql new file mode 100644 index 0000000..b519bfd --- /dev/null +++ b/geocoder/setup/admin1/indexes.sql @@ -0,0 +1,3 @@ +-- Index on admin1 id +CREATE UNIQUE INDEX idx_qs_adm1_global_id ON qs_adm1 (global_id) +CREATE INDEX idx_admin1_synonyms_name_adm0 ON admin1_synonyms (name_, adm0_a3) diff --git a/geocoder/setup/admin1/triggers.sql b/geocoder/setup/admin1/triggers.sql new file mode 100644 index 0000000..9f8e84e --- /dev/null +++ b/geocoder/setup/admin1/triggers.sql @@ -0,0 +1,12 @@ +-- create trigger function. used in both admin0 and admin1 synonym tables +CREATE OR REPLACE FUNCTION alpha_numeric_identifiers() RETURNS trigger AS $alpha_numeric_identifiers$ + BEGIN + NEW.name_ := lower(regexp_replace(NEW.name, '[^a-zA-Z\u00C0-\u00ff]+', '', 'g')); + RETURN NEW; + END; +$alpha_numeric_identifiers$ LANGUAGE plpgsql; + +-- 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() diff --git a/geocoder/setup/ip-addresses/indexes.sql b/geocoder/setup/ip-addresses/indexes.sql new file mode 100644 index 0000000..e69de29 diff --git a/geocoder/setup/ip-addresses/triggers.sql b/geocoder/setup/ip-addresses/triggers.sql new file mode 100644 index 0000000..e69de29 diff --git a/geocoder/setup/namedplace/indexes.sql b/geocoder/setup/namedplace/indexes.sql new file mode 100644 index 0000000..c5a5327 --- /dev/null +++ b/geocoder/setup/namedplace/indexes.sql @@ -0,0 +1,8 @@ +-- create indexes on named places table +CREATE INDEX idx_global_cities_points_limited_a ON global_cities_points_limited (lowername, iso2) +CREATE INDEX idx_global_cities_points_limited_admin1 ON global_cities_points_limited (admin1) +CREATE INDEX idx_global_cities_points_limited_geoname_id ON global_cities_points_limited (geoname_id) + +CREATE INDEX idx_global_cities_alternates_limited_admin1 ON global_cities_alternates_limited (admin1) +CREATE INDEX idx_global_cities_alternates_limited_admin1_geonameid ON global_cities_alternates_limited (admin1_geonameid) +CREATE INDEX idx_global_cities_alternates_limited_lowername ON global_cities_alternates_limited (lowername) diff --git a/geocoder/setup/namedplace/triggers.sql b/geocoder/setup/namedplace/triggers.sql new file mode 100644 index 0000000..e69de29 diff --git a/geocoder/setup/postal-codes/indexes.sql b/geocoder/setup/postal-codes/indexes.sql new file mode 100644 index 0000000..c5575a4 --- /dev/null +++ b/geocoder/setup/postal-codes/indexes.sql @@ -0,0 +1,2 @@ +-- create indexes on postal code polygon table +CREATE UNIQUE INDEX idx_postal_code_polygons_a3_code ON postal_code_polygons (adm0_a3, postal_code) diff --git a/geocoder/setup/postal-codes/triggers.sql b/geocoder/setup/postal-codes/triggers.sql new file mode 100644 index 0000000..e69de29