]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 8 Feb 2013 18:23:46 +0000 (19:23 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 8 Feb 2013 18:23:46 +0000 (19:23 +0100)
sql/functions.sql
website/reverse.php
website/search.php

index 5b17f6d034a927e17460d6d9e4f692addb21bd08..6fbdeb46b15cc98debf9df66c6fac9c850f53553 100644 (file)
@@ -345,6 +345,12 @@ BEGIN
       result := result || w;
     END IF;
 
+    w := getorcreate_word_id(s);
+
+    IF NOT (ARRAY[w] <@ result) THEN
+      result := result || w;
+    END IF;
+
     words := string_to_array(s, ' ');
     IF array_upper(words, 1) IS NOT NULL THEN
       FOR j IN 1..array_upper(words, 1) LOOP
@@ -407,6 +413,12 @@ BEGIN
     result := result || w;
   END IF;
 
+  w := getorcreate_word_id(s);
+
+  IF NOT (ARRAY[w] <@ result) THEN
+    result := result || w;
+  END IF;
+
   words := string_to_array(s, ' ');
   IF array_upper(words, 1) IS NOT NULL THEN
     FOR j IN 1..array_upper(words, 1) LOOP
@@ -1695,8 +1707,15 @@ BEGIN
         FOR i IN 1..array_upper(isin, 1) LOOP
           address_street_word_id := get_name_id(make_standard_name(isin[i]));
           IF address_street_word_id IS NOT NULL AND NOT(ARRAY[address_street_word_id] <@ isin_tokens) THEN
+            nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
             isin_tokens := isin_tokens || address_street_word_id;
           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]);
+          END IF;
         END LOOP;
       END IF;
     END IF;
@@ -1706,8 +1725,15 @@ BEGIN
         FOR i IN 1..array_upper(isin, 1) LOOP
           address_street_word_id := get_name_id(make_standard_name(isin[i]));
           IF address_street_word_id IS NOT NULL AND NOT(ARRAY[address_street_word_id] <@ isin_tokens) THEN
+            nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
             isin_tokens := isin_tokens || address_street_word_id;
           END IF;
+
+          -- merge 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]);
+          END IF;
         END LOOP;
       END IF;
     END IF;
@@ -1718,6 +1744,10 @@ BEGIN
         address_street_word_id := get_name_id(make_standard_name(location.postcode));
         nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
         isin_tokens := isin_tokens || address_street_word_id;
+
+        -- also merge in the single word version
+        address_street_word_id := get_word_id(make_standard_name(location.postcode));
+        nameaddress_vector := array_merge(nameaddress_vector, ARRAY[address_street_word_id]);
       END LOOP;
     END IF;
 
index 859c7e3dec29d9354c4fe355682d251ff283a945..434b5bd10daed928a18ef1ba24b705091bf09dee 100755 (executable)
@@ -54,7 +54,8 @@
 
         if (isset($_GET['osm_type']) && isset($_GET['osm_id']) && (int)$_GET['osm_id'] && ($_GET['osm_type'] == 'N' || $_GET['osm_type'] == 'W' || $_GET['osm_type'] == 'R'))
         {
-                $iPlaceID = $oDB->getOne("select place_id from placex where osm_type = '".$_GET['osm_type']."' and osm_id = ".(int)$_GET['osm_id']." order by type = 'postcode' asc");
+                $iPlaceID = $oDB->getOne($sSQL = ("select place_id from placex where osm_type = '".$_GET['osm_type']."' and osm_id = ".(int)$_GET['osm_id']." order by type = 'postcode' asc"));
+               if (CONST_Debug) var_dump($sSQL);
                if (!$iPlaceID) $sError = 'OSM ID Not Found';
         }
        else
                        $sSQL .= ' and (ST_GeometryType(geometry) not in (\'ST_Polygon\',\'ST_MultiPolygon\') ';
                        $sSQL .= ' OR ST_DWithin('.$sPointSQL.', centroid, '.$fSearchDiam.'))';
                        $sSQL .= ' ORDER BY ST_distance('.$sPointSQL.', geometry) ASC limit 1';
-//var_dump($sSQL);
+                       if (CONST_Debug) var_dump($sSQL);
                        $aPlace = $oDB->getRow($sSQL);
                        if (PEAR::IsError($aPlace))
                        {
                $aPlace['addresstype'] = $sAddressType;
 
        }
+
+       if (CONST_Debug) exit;
+
        include(CONST_BasePath.'/lib/template/address-'.$sOutputFormat.'.php');
index dbb364048b3c1ec51a56bee2d2c442cc9adcb610..6319a83502e778140942c673f1e69f8d4f0ee522 100755 (executable)
                        $bFirst = false;
                }
                if (!$bDeDupe || (!isset($aOSMIDDone[$aResult['osm_type'].$aResult['osm_id']])
-                       && !isset($aClassTypeNameDone[$aResult['osm_type'].$aResult['class'].$aResult['name']])))
+                       && !isset($aClassTypeNameDone[$aResult['osm_type'].$aResult['class'].$aResult['type'].$aResult['name']])))
                {
                        $aOSMIDDone[$aResult['osm_type'].$aResult['osm_id']] = true;
-                       $aClassTypeNameDone[$aResult['osm_type'].$aResult['class'].$aResult['name']] = true;
+                       $aClassTypeNameDone[$aResult['osm_type'].$aResult['class'].$aResult['type'].$aResult['name']] = true;
                        $aSearchResults[] = $aResult;
                }