]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 17 Aug 2014 20:41:12 +0000 (22:41 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 17 Aug 2014 20:41:12 +0000 (22:41 +0200)
1  2 
sql/functions.sql

diff --combined sql/functions.sql
index 4224977cffef4f56df9745b11d144aa82fe5702a,dc5f3bbdc00cb43e21e746f8e3209ccccbf9bcf2..9b083609675642633929075b1df8bed8aba66e05
@@@ -936,11 -936,6 +936,11 @@@ DECLAR
  BEGIN
    --DEBUG: RAISE WARNING '% %',NEW.osm_type,NEW.osm_id;
  
 +  -- remove operator tag for most places, messes too much with search_name indexes
 +  IF NEW.class not in ('amenity', 'shop') THEN
 +    NEW.name := delete(NEW.name, 'operator');
 +  END IF;
 +
    -- just block these
    IF NEW.class in ('landuse','natural') and NEW.name is null THEN
  --    RAISE WARNING 'empty landuse %',NEW.osm_id;
@@@ -2067,11 -2062,6 +2067,11 @@@ BEGI
      --DEBUG: RAISE WARNING '%', existingplacex;
    END IF;
  
 +  -- remove operator tag for most places, messes too much with search_name indexes
 +  IF NEW.class not in ('amenity', 'shop') THEN
 +    NEW.name := delete(NEW.name, 'operator');
 +  END IF;
 +
    -- Just block these - lots and pointless
    IF NEW.class in ('landuse','natural') and NEW.name is null THEN
      -- if the name tag was removed, older versions might still be lurking in the place table
  
    END IF;
  
 +  -- refuse to update multiplpoygons with too many objects, too much of a performance hit
 +  IF ST_NumGeometries(NEW.geometry) > 2000 THEN
 +    RAISE WARNING 'Dropping update of % % because of geometry complexity.', NEW.osm_type, NEW.osm_id;
 +    RETURN NULL;
 +  END IF;
 +
    IF coalesce(existing.name::text, '') != coalesce(NEW.name::text, '')
       OR coalesce(existing.extratags::text, '') != coalesce(NEW.extratags::text, '')
       OR coalesce(existing.housenumber, '') != coalesce(NEW.housenumber, '')
@@@ -2973,14 -2957,14 +2973,14 @@@ BEGI
        wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/wiki/',E'\\2:');
        wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3}).wikipedia.org/w/index.php\\?title=',E'\\2:');
        wiki_article := regexp_replace(wiki_article,E'^(.*?)/([a-z]{2,3})/wiki/',E'\\2:');
-       wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3})[=:]',E'\\2:');
+       --wiki_article := regexp_replace(wiki_article,E'^(.*?)([a-z]{2,3})[=:]',E'\\2:');
        wiki_article := replace(wiki_article,' ','_');
-       wiki_article_title := trim(split_part(wiki_article, ':', 2));
-       IF wiki_article_title IS NULL OR wiki_article_title = '' THEN
+       IF strpos(wiki_article, ':') IN (3,4) THEN
+         wiki_article_language := lower(trim(split_part(wiki_article, ':', 1)));
+         wiki_article_title := trim(substr(wiki_article, strpos(wiki_article, ':')+1));
+       ELSE
          wiki_article_title := trim(wiki_article);
          wiki_article_language := CASE WHEN langs[i] = 'english' THEN 'en' WHEN langs[i] = 'country' THEN get_country_language_code(country_code) ELSE langs[i] END;
-       ELSE
-         wiki_article_language := lower(trim(split_part(wiki_article, ':', 1)));
        END IF;
  
        select wikipedia_article.language,wikipedia_article.title,wikipedia_article.importance