]> git.openstreetmap.org Git - nominatim.git/commitdiff
pre-create word list to avoid duplicates due to parallel indexing
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 13 May 2012 07:15:56 +0000 (09:15 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 13 May 2012 07:15:56 +0000 (09:15 +0200)
sql/functions.sql
utils/setup.php

index ec25c7fa0b1073ffe172fca3c1c7eb8a1cf061ab..b4657bf8992ca17166efd6116d9e4a4a4ee96019 100644 (file)
@@ -389,7 +389,7 @@ BEGIN
   result := '{}'::INTEGER[];
 
   s := make_standard_name(src);
-  w := getorcreate_name_id(s);
+  w := getorcreate_name_id(s, src);
 
   IF NOT (ARRAY[w] <@ result) THEN
     result := result || w;
@@ -407,6 +407,30 @@ BEGIN
     END LOOP;
   END IF;
 
+  words := regexp_split_to_array(src, E'[,;()]');
+  IF array_upper(words, 1) != 1 THEN
+    FOR j IN 1..array_upper(words, 1) LOOP
+      s := make_standard_name(words[j]);
+      IF s != '' THEN
+        w := getorcreate_word_id(s);
+        IF NOT (ARRAY[w] <@ result) THEN
+          result := result || w;
+        END IF;
+      END IF;
+    END LOOP;
+  END IF;
+
+  s := regexp_replace(src, '市$', '');
+  IF s != src THEN
+    s := make_standard_name(s);
+    IF s != '' THEN
+      w := getorcreate_name_id(s, src);
+      IF NOT (ARRAY[w] <@ result) THEN
+        result := result || w;
+      END IF;
+    END IF;
+  END IF;
+
   RETURN result;
 END;
 $$
index 29dd86ac3469ec401b098b25bc953a4b20ff73a2..b40bad3aa24de2df2663a13dde30fdf10c4f99d5 100755 (executable)
                if (!pg_query($oDB->connection, 'CREATE SEQUENCE seq_place start 100000')) fail(pg_last_error($oDB->connection));
                echo '.';
 
+               // pre-create the word list
+               if (!pg_query($oDB->connection, 'select count(make_keywords(v)) from (select distinct svals(name) as v from place) as w where v is not null;')) fail(pg_last_error($oDB->connection));
+               echo '.';
+               if (!pg_query($oDB->connection, 'select count(make_keywords(v)) from (select distinct postcode as v from place) as w where v is not null;')) fail(pg_last_error($oDB->connection));
+               echo '.';
+               if (!pg_query($oDB->connection, 'select count(getorcreate_housenumber_id(v)) from (select distinct housenumber as v from place where housenumber is not null) as w;')) fail(pg_last_error($oDB->connection));
+               echo '.';
+
                $aDBInstances = array();
                for($i = 0; $i < $iInstances; $i++)
                {