X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/5fb850982a25a78ddb01754c7b11e81a9ce80ca0..c6a7ef5574179af010deddef033f4001dd7d4c40:/sql/functions.sql

diff --git a/sql/functions.sql b/sql/functions.sql
index e324277e..ad2007cb 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;
 
@@ -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;
