Merge pull request #1422 from lonvia/remove-country-from-addressline

Remove country from addressline
This commit is contained in:
Sarah Hoffmann 2019-07-16 22:29:17 +02:00 committed by GitHub
commit 15bca71b0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 13 deletions

View File

@ -6,6 +6,22 @@ to newer versions of Nominatim.
SQL statements should be executed from the PostgreSQL commandline. Execute SQL statements should be executed from the PostgreSQL commandline. Execute
`psql nominatim` to enter command line mode. `psql nominatim` to enter command line mode.
## 3.3.0 -> master
### Reorganisation of location_area_country table
The table `location_area_country` has been optimized. You need to switch to the
new format when you run updates. While updates are disabled, run the following
SQL commands:
```sql
CREATE TABLE location_area_country_new AS
SELECT place_id, country_code, geometry FROM location_area_country;
DROP TABLE location_area_country;
ALTER TABLE location_area_country_new RENAME TO location_area_country;
CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry);
CREATE INDEX idx_location_area_country_place_id ON location_area_country USING BTREE (place_id);
```
## 3.2.0 -> 3.3.0 ## 3.2.0 -> 3.3.0

View File

@ -547,7 +547,7 @@ BEGIN
-- RAISE WARNING 'get_country_code, start: %', ST_AsText(place_centre); -- RAISE WARNING 'get_country_code, start: %', ST_AsText(place_centre);
-- Try for a OSM polygon -- Try for a OSM polygon
FOR nearcountry IN select country_code from location_area_country where country_code is not null and not isguess and st_covers(geometry, place_centre) limit 1 FOR nearcountry IN select country_code from location_area_country where country_code is not null and st_covers(geometry, place_centre) limit 1
LOOP LOOP
RETURN nearcountry.country_code; RETURN nearcountry.country_code;
END LOOP; END LOOP;
@ -1824,7 +1824,7 @@ BEGIN
-- RAISE WARNING '% isaddress: %', location.place_id, location_isaddress; -- RAISE WARNING '% isaddress: %', location.place_id, location_isaddress;
-- Add it to the list of search terms -- Add it to the list of search terms
IF NOT %REVERSE-ONLY% AND location.rank_search > 4 THEN IF NOT %REVERSE-ONLY% THEN
nameaddress_vector := array_merge(nameaddress_vector, location.keywords::integer[]); nameaddress_vector := array_merge(nameaddress_vector, location.keywords::integer[]);
END IF; END IF;
INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address) INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address)

View File

@ -6,11 +6,9 @@ BEGIN
-- start -- start
IF in_partition = -partition- THEN IF in_partition = -partition- THEN
FOR r IN FOR r IN
SELECT place_id, keywords, rank_address, rank_search, min(ST_Distance(feature, centroid)) as distance, isguess, postcode, centroid FROM ( SELECT place_id, keywords, rank_address, rank_search, min(ST_Distance(feature, centroid)) as distance, isguess, postcode, centroid
SELECT * FROM location_area_large_-partition- WHERE ST_Intersects(geometry, feature) and rank_search < maxrank FROM location_area_large_-partition-
UNION ALL WHERE ST_Intersects(geometry, feature) and rank_search < maxrank
SELECT * FROM location_area_country WHERE ST_Intersects(geometry, feature) and rank_search < maxrank
) as location_area
GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid GROUP BY place_id, keywords, rank_address, rank_search, isguess, postcode, centroid
ORDER BY rank_address, isin_tokens && keywords desc, isguess asc, ORDER BY rank_address, isin_tokens && keywords desc, isguess asc,
ST_Distance(feature, centroid) * ST_Distance(feature, centroid) *
@ -64,9 +62,9 @@ BEGIN
RETURN TRUE; RETURN TRUE;
END IF; END IF;
IF in_rank_search <= 4 THEN IF in_rank_search <= 4 and not in_estimate THEN
INSERT INTO location_area_country (partition, place_id, country_code, keywords, rank_search, rank_address, isguess, centroid, geometry) INSERT INTO location_area_country (place_id, country_code, geometry)
values (in_partition, in_place_id, in_country_code, in_keywords, in_rank_search, in_rank_address, in_estimate, in_centroid, in_geometry); values (in_place_id, in_country_code, in_geometry);
RETURN TRUE; RETURN TRUE;
END IF; END IF;

View File

@ -35,9 +35,6 @@ CREATE TABLE search_name_blank (
); );
CREATE TABLE location_area_country () INHERITS (location_area_large) {ts:address-data};
CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry) {ts:address-index};
-- start -- start
CREATE TABLE location_area_large_-partition- () INHERITS (location_area_large) {ts:address-data}; CREATE TABLE location_area_large_-partition- () INHERITS (location_area_large) {ts:address-data};
CREATE INDEX idx_location_area_large_-partition-_place_id ON location_area_large_-partition- USING BTREE (place_id) {ts:address-index}; CREATE INDEX idx_location_area_large_-partition-_place_id ON location_area_large_-partition- USING BTREE (place_id) {ts:address-index};

View File

@ -69,6 +69,15 @@ CREATE TABLE location_area (
CREATE TABLE location_area_large () INHERITS (location_area); CREATE TABLE location_area_large () INHERITS (location_area);
DROP TABLE IF EXISTS location_area_country;
CREATE TABLE location_area_country (
place_id BIGINT,
country_code varchar(2),
geometry GEOMETRY(Geometry, 4326)
) {ts:address-data};
CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry) {ts:address-index};
drop table IF EXISTS location_property CASCADE; drop table IF EXISTS location_property CASCADE;
CREATE TABLE location_property ( CREATE TABLE location_property (
place_id BIGINT, place_id BIGINT,