mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
update classtype tables for special phrases along with the places
This commit is contained in:
@@ -875,6 +875,7 @@ DECLARE
|
|||||||
country_code VARCHAR(2);
|
country_code VARCHAR(2);
|
||||||
default_language VARCHAR(10);
|
default_language VARCHAR(10);
|
||||||
diameter FLOAT;
|
diameter FLOAT;
|
||||||
|
classtable TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- RAISE WARNING '%',NEW.osm_id;
|
-- RAISE WARNING '%',NEW.osm_id;
|
||||||
|
|
||||||
@@ -1148,6 +1149,17 @@ BEGIN
|
|||||||
|
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
-- add to tables for special search
|
||||||
|
-- Note: won't work on initial import because the classtype tables
|
||||||
|
-- do not yet exist. It won't hurt either.
|
||||||
|
classtable := 'place_classtype_' || NEW.class || '_' || NEW.type;
|
||||||
|
SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable INTO result;
|
||||||
|
IF result THEN
|
||||||
|
EXECUTE 'INSERT INTO ' || classtable::regclass || ' (place_id, centroid) VALUES ($1,$2)'
|
||||||
|
USING NEW.place_id, ST_Centroid(NEW.geometry);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
-- IF NEW.rank_search < 26 THEN
|
-- IF NEW.rank_search < 26 THEN
|
||||||
-- RAISE WARNING 'placex insert: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
|
-- RAISE WARNING 'placex insert: % % % %',NEW.osm_type,NEW.osm_id,NEW.class,NEW.type;
|
||||||
-- END IF;
|
-- END IF;
|
||||||
@@ -1558,6 +1570,7 @@ CREATE OR REPLACE FUNCTION placex_delete() RETURNS TRIGGER
|
|||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
b BOOLEAN;
|
b BOOLEAN;
|
||||||
|
classtable TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
IF OLD.rank_address < 30 THEN
|
IF OLD.rank_address < 30 THEN
|
||||||
@@ -1584,6 +1597,13 @@ BEGIN
|
|||||||
|
|
||||||
DELETE FROM place_addressline where place_id = OLD.place_id;
|
DELETE FROM place_addressline where place_id = OLD.place_id;
|
||||||
|
|
||||||
|
-- remove from tables for special search
|
||||||
|
classtable := 'place_classtype_' || OLD.class || '_' || OLD.type;
|
||||||
|
SELECT count(*)>0 FROM pg_tables WHERE tablename = classtable INTO b;
|
||||||
|
IF b THEN
|
||||||
|
EXECUTE 'DELETE FROM ' || classtable::regclass || ' WHERE place_id = $1' USING OLD.place_id;
|
||||||
|
END IF;
|
||||||
|
|
||||||
RETURN OLD;
|
RETURN OLD;
|
||||||
|
|
||||||
END;
|
END;
|
||||||
|
|||||||
@@ -91,12 +91,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "create index idx_placex_classtype on placex (class, type);";
|
echo "create index idx_placex_classtype on placex (class, type);\n";
|
||||||
|
|
||||||
foreach($aPairs as $aPair)
|
foreach($aPairs as $aPair)
|
||||||
{
|
{
|
||||||
if ($aPair[1] == 'highway') continue;
|
if ($aPair[1] == 'highway') continue;
|
||||||
|
|
||||||
|
echo "drop table if exists place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1]).";\n";
|
||||||
echo "create table place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." as ";
|
echo "create table place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." as ";
|
||||||
echo "select place_id as place_id,st_centroid(geometry) as centroid from placex where ";
|
echo "select place_id as place_id,st_centroid(geometry) as centroid from placex where ";
|
||||||
echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."';\n";
|
echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."';\n";
|
||||||
@@ -107,9 +108,9 @@
|
|||||||
echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_place_id ";
|
echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_place_id ";
|
||||||
echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING btree(place_id);\n";
|
echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING btree(place_id);\n";
|
||||||
|
|
||||||
echo "GRANT SELECT ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." TO \"www-data\";";
|
echo "GRANT SELECT ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." TO \"www-data\";\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "drop index idx_placex_classtype;";
|
echo "drop index idx_placex_classtype;\n";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user