X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/5fb850982a25a78ddb01754c7b11e81a9ce80ca0..47714357cb800c69d006b3a868356bf80d09549a:/sql/functions.sql diff --git a/sql/functions.sql b/sql/functions.sql index e324277e..5d2b7a22 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -1358,7 +1358,7 @@ BEGIN END LOOP; NEW.importance := null; - SELECT importance, wikipedia + SELECT wikipedia, importance FROM compute_importance(NEW.extratags, NEW.country_code, NEW.osm_type, NEW.osm_id) INTO NEW.wikipedia,NEW.importance; @@ -2444,7 +2444,7 @@ BEGIN SELECT placex.place_id, osm_type, osm_id, name, CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class, CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as type, - admin_level, fromarea, isaddress, + admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress, CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address, distance, country_code, postcode FROM place_addressline join placex on (address_place_id = placex.place_id) @@ -2622,7 +2622,7 @@ END; $$ LANGUAGE plpgsql IMMUTABLE; -DROP TYPE wikipedia_article_match CASCADE; +DROP TYPE IF EXISTS wikipedia_article_match CASCADE; create type wikipedia_article_match as ( language TEXT, title TEXT, @@ -2692,19 +2692,23 @@ DECLARE match RECORD; result place_importance; BEGIN - FOR match IN SELECT * FROM get_wikipedia_match(extratags, country_code) LOOP + FOR match IN SELECT * FROM get_wikipedia_match(extratags, country_code) + WHERE language is not NULL + LOOP result.importance := match.importance; result.wikipedia := match.language || ':' || match.title; RETURN result; END LOOP; - FOR match IN SELECT * FROM wikipedia_article - WHERE osm_type = osm_type and osm_id = osm_id - ORDER BY importance DESC limit 1 LOOP - result.importance := match.importance; - result.wikipedia := match.language || ':' || match.title; - RETURN result; - END LOOP; + IF extratags ? 'wikidata' THEN + FOR match IN SELECT * FROM wikipedia_article + WHERE wd_page_title = extratags->'wikidata' + ORDER BY language = 'en' DESC, langcount DESC LIMIT 1 LOOP + result.importance := match.importance; + result.wikipedia := match.language || ':' || match.title; + RETURN result; + END LOOP; + END IF; RETURN null; END;