X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/caea14d0357a1e0a901dfac82febc834aec95f0f..248d6b413a245beb070ee4fda5518ae0344a346e:/sql/functions/placex_triggers.sql diff --git a/sql/functions/placex_triggers.sql b/sql/functions/placex_triggers.sql index 9c2777a9..f494b612 100644 --- a/sql/functions/placex_triggers.sql +++ b/sql/functions/placex_triggers.sql @@ -92,7 +92,16 @@ BEGIN END IF; IF fallback THEN - IF ST_Area(bbox) < 0.005 THEN + IF addr_street is null and addr_place is not null THEN + -- The address is attached to a place we don't know. Find the + -- nearest place instead. + FOR location IN + SELECT place_id FROM getNearFeatures(poi_partition, bbox, 26, '{}'::INTEGER[]) + ORDER BY rank_address DESC, isguess asc, distance LIMIT 1 + LOOP + parent_place_id := location.place_id; + END LOOP; + ELSEIF ST_Area(bbox) < 0.005 THEN -- for smaller features get the nearest road SELECT getNearestRoadPlaceId(poi_partition, bbox) INTO parent_place_id; --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id; @@ -281,23 +290,6 @@ BEGIN END IF; END IF; END LOOP; - - IF address ? 'is_in' THEN - -- is_in items need splitting - isin := regexp_split_to_array(address->'is_in', E'[;,]'); - IF array_upper(isin, 1) IS NOT NULL THEN - FOR i IN 1..array_upper(isin, 1) LOOP - isin_tokens := array_merge(isin_tokens, - word_ids_from_name(isin[i])); - - -- merge word into address vector - IF NOT %REVERSE-ONLY% THEN - nameaddress_vector := array_merge(nameaddress_vector, - addr_ids_from_name(isin[i])); - END IF; - END LOOP; - END IF; - END IF; END IF; IF NOT %REVERSE-ONLY% THEN nameaddress_vector := array_merge(nameaddress_vector, isin_tokens);