]> git.openstreetmap.org Git - nominatim.git/blobdiff - sql/functions.sql
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / sql / functions.sql
index b2caf0a69c5a49c1d90c41d7ca780d81a68af889..5d2b7a2216aa8a95c9e4bfbca324ca3828db0b43 100644 (file)
@@ -1358,7 +1358,7 @@ BEGIN
   END LOOP;
 
   NEW.importance := null;
   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;
 
     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,
     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)
            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;
 
 $$
 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,
 create type wikipedia_article_match as (
   language TEXT,
   title TEXT,
@@ -2692,7 +2692,9 @@ DECLARE
   match RECORD;
   result place_importance;
 BEGIN
   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;
     result.importance := match.importance;
     result.wikipedia := match.language || ':' || match.title;
     RETURN result;
@@ -2701,7 +2703,7 @@ BEGIN
   IF extratags ? 'wikidata' THEN
     FOR match IN SELECT * FROM wikipedia_article
                   WHERE wd_page_title = extratags->'wikidata'
   IF extratags ? 'wikidata' THEN
     FOR match IN SELECT * FROM wikipedia_article
                   WHERE wd_page_title = extratags->'wikidata'
-                  ORDER BY importance DESC limit 1 LOOP
+                  ORDER BY language = 'en' DESC, langcount DESC LIMIT 1 LOOP
       result.importance := match.importance;
       result.wikipedia := match.language || ':' || match.title;
       RETURN result;
       result.importance := match.importance;
       result.wikipedia := match.language || ':' || match.title;
       RETURN result;