]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 27 Nov 2018 21:38:58 +0000 (22:38 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 27 Nov 2018 21:38:58 +0000 (22:38 +0100)
1  2 
sql/functions.sql
utils/update.php

diff --combined sql/functions.sql
index f1f473b6460626806b5bc20feb3dee799983b2f3,f17976adfc703a3e5ddca23f26625252d4307421..13d897d029fa3b8cdd49ab93bdb77caa17021cf7
@@@ -1310,6 -1310,9 +1310,9 @@@ BEGI
  
    NEW.indexed_date = now();
  
+   IF NOT %REVERSE-ONLY% THEN
+     DELETE from search_name WHERE place_id = NEW.place_id;
+   END IF;
    result := deleteSearchName(NEW.partition, NEW.place_id);
    DELETE FROM place_addressline WHERE place_id = NEW.place_id;
    result := deleteRoad(NEW.partition, NEW.place_id);
      IF NEW.parent_place_id IS NOT NULL THEN
  
        -- Get the details of the parent road
-       select s.country_code, s.name_vector, s.nameaddress_vector from search_name s
-        where s.place_id = NEW.parent_place_id INTO location;
+       SELECT p.country_code, p.postcode FROM placex p
+        WHERE p.place_id = NEW.parent_place_id INTO location;
        NEW.country_code := location.country_code;
        --DEBUG: RAISE WARNING 'Got parent details from search name';
  
            IF NEW.address is not null AND NEW.address ? 'postcode' THEN
                NEW.postcode = upper(trim(NEW.address->'postcode'));
            ELSE
-              SELECT postcode FROM placex WHERE place_id = NEW.parent_place_id INTO NEW.postcode;
+              NEW.postcode := location.postcode;
            END IF;
            IF NEW.postcode is null THEN
              NEW.postcode := get_nearest_postcode(NEW.country_code, place_centroid);
          return NEW;
        END IF;
  
-       -- Merge address from parent
-       nameaddress_vector := array_merge(nameaddress_vector, location.nameaddress_vector);
-       nameaddress_vector := array_merge(nameaddress_vector, location.name_vector);
        -- Performance, it would be more acurate to do all the rest of the import
        -- process but it takes too long
        -- Just be happy with inheriting from parent road only
        IF NEW.rank_search <= 25 and NEW.rank_address > 0 THEN
          result := add_location(NEW.place_id, NEW.country_code, NEW.partition, name_vector, NEW.rank_search, NEW.rank_address, upper(trim(NEW.address->'postcode')), NEW.geometry);
          --DEBUG: RAISE WARNING 'Place added to location table';
        END IF;
  
-       result := insertSearchName(NEW.partition, NEW.place_id, NEW.country_code, name_vector, nameaddress_vector, NEW.rank_search, NEW.rank_address, NEW.importance, place_centroid, NEW.geometry);
-       --DEBUG: RAISE WARNING 'Place added to search table';
+       result := insertSearchName(NEW.partition, NEW.place_id, name_vector,
+                                  NEW.rank_search, NEW.rank_address, NEW.geometry);
+       IF NOT %REVERSE-ONLY% THEN
+           -- Merge address from parent
+           SELECT s.name_vector, s.nameaddress_vector FROM search_name s
+            WHERE s.place_id = NEW.parent_place_id INTO location;
+           nameaddress_vector := array_merge(nameaddress_vector,
+                                             location.nameaddress_vector);
+           nameaddress_vector := array_merge(nameaddress_vector, location.name_vector);
+           INSERT INTO search_name (place_id, search_rank, address_rank,
+                                    importance, country_code, name_vector,
+                                    nameaddress_vector, centroid)
+                  VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
+                          NEW.importance, NEW.country_code, name_vector,
+                          nameaddress_vector, place_centroid);
+           --DEBUG: RAISE WARNING 'Place added to search table';
+         END IF;
  
        return NEW;
      END IF;
          IF address_street_word_id IS NOT NULL AND NOT(ARRAY[address_street_word_id] <@ isin_tokens) THEN
            isin_tokens := isin_tokens || address_street_word_id;
          END IF;
-         address_street_word_id := get_word_id(make_standard_name(addr_item.value));
-         IF address_street_word_id IS NOT NULL THEN
-           nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
+         IF NOT %REVERSE-ONLY% THEN
+           address_street_word_id := get_word_id(make_standard_name(addr_item.value));
+           IF address_street_word_id IS NOT NULL THEN
+             nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
+           END IF;
          END IF;
        END IF;
        IF addr_item.key = 'is_in' THEN
              END IF;
  
              -- merge word into address vector
-             address_street_word_id := get_word_id(make_standard_name(isin[i]));
-             IF address_street_word_id IS NOT NULL THEN
-               nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
+             IF NOT %REVERSE-ONLY% THEN
+               address_street_word_id := get_word_id(make_standard_name(isin[i]));
+               IF address_street_word_id IS NOT NULL THEN
+                 nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
+               END IF;
              END IF;
            END LOOP;
          END IF;
        END IF;
      END LOOP;
    END IF;
-   nameaddress_vector := array_merge(nameaddress_vector, isin_tokens);
+   IF NOT %REVERSE-ONLY% THEN
+     nameaddress_vector := array_merge(nameaddress_vector, isin_tokens);
+   END IF;
  
  -- RAISE WARNING 'ISIN: %', isin_tokens;
  
  
        -- RAISE WARNING '% isaddress: %', location.place_id, location_isaddress;
        -- Add it to the list of search terms
-       IF location.rank_search > 4 THEN
+       IF NOT %REVERSE-ONLY% AND location.rank_search > 4 THEN
            nameaddress_vector := array_merge(nameaddress_vector, location.keywords::integer[]);
        END IF;
        INSERT INTO place_addressline (place_id, address_place_id, fromarea, isaddress, distance, cached_rank_address)
        --DEBUG: RAISE WARNING 'insert into road location table (full)';
      END IF;
  
-     result := insertSearchName(NEW.partition, NEW.place_id, NEW.country_code, name_vector, nameaddress_vector, NEW.rank_search, NEW.rank_address, NEW.importance, place_centroid, NEW.geometry);
-     --DEBUG: RAISE WARNING 'added to serach name (full)';
+     result := insertSearchName(NEW.partition, NEW.place_id, name_vector,
+                                NEW.rank_search, NEW.rank_address, NEW.geometry);
+     --DEBUG: RAISE WARNING 'added to search name (full)';
+     IF NOT %REVERSE-ONLY% THEN
+         INSERT INTO search_name (place_id, search_rank, address_rank,
+                                  importance, country_code, name_vector,
+                                  nameaddress_vector, centroid)
+                VALUES (NEW.place_id, NEW.rank_search, NEW.rank_address,
+                        NEW.importance, NEW.country_code, name_vector,
+                        nameaddress_vector, place_centroid);
+     END IF;
  
    END IF;
  
@@@ -1987,6 -2020,9 +2020,9 @@@ BEGI
    --DEBUG: RAISE WARNING 'placex_delete:09 % %',OLD.osm_type,OLD.osm_id;
  
    IF OLD.name is not null THEN
+     IF NOT %REVERSE-ONLY% THEN
+       DELETE from search_name WHERE place_id = OLD.place_id;
+     END IF;
      b := deleteSearchName(OLD.partition, OLD.place_id);
    END IF;
  
@@@ -2465,7 -2501,7 +2501,7 @@@ BEGI
      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 address_place_id = for_place_id AND rank_address = 0 THEN 100 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) 
diff --combined utils/update.php
index f5c208577e775c48aa81c6788dd29186941e5ef9,8756f2e54f0eef5c1308cd5684383103bcb6708a..eebd686de62f2e47a8275923b2b0a2d86ed69daf
@@@ -48,7 -48,6 +48,7 @@@ $aCMDOption
  getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
  
  if (!isset($aResult['index-instances'])) $aResult['index-instances'] = 1;
 +
  if (!isset($aResult['index-rank'])) $aResult['index-rank'] = 0;
  
  date_default_timezone_set('Etc/UTC');
@@@ -111,6 -110,7 +111,7 @@@ if ($aResult['init-updates']) 
                                        'enable-diff-updates' => true,
                                        'verbose' => $aResult['verbose']
                                       ));
+         $cSetup->connect();
          $cSetup->createFunctions();
      }