]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 4 Oct 2016 18:34:34 +0000 (20:34 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 4 Oct 2016 18:34:34 +0000 (20:34 +0200)
1  2 
lib/Geocode.php
sql/functions.sql
tests/features/api/regression.feature

diff --combined lib/Geocode.php
index 54e738ff5aa90e7ece10478c3f5588a7c55509b9,cf05df12d4497ac3202b2b12e1b8363a0aad7103..4ed90dc2bb89c2696168c617ff5a604e80bd75c7
@@@ -24,7 -24,7 +24,7 @@@ class Geocod
  
      protected $aExcludePlaceIDs = array();
      protected $bDeDupe = true;
 -    protected $bReverseInPlan = false;
 +    protected $bReverseInPlan = true;
  
      protected $iLimit = 20;
      protected $iFinalLimit = 10;
                      $aCountries[] = strtolower($sCountryCode);
                  }
              }
-             if (isset($aCountryCodes))
+             if (isset($aCountries))
                  $this->aCountryCodes = $aCountries;
          }
  
                          // TODO: filter out the pointless search terms (2 letter name tokens and less)
                          // they might be right - but they are just too darned expensive to run
                          if (sizeof($aSearch['aName'])) $aTerms[] = "name_vector @> ARRAY[".join($aSearch['aName'], ",")."]";
 -                        if (sizeof($aSearch['aNameNonSearch'])) $aTerms[] = "array_cat(name_vector,ARRAY[]::integer[]) @> ARRAY[".join($aSearch['aNameNonSearch'], ",")."]";
 +                        //if (sizeof($aSearch['aNameNonSearch'])) $aTerms[] = "array_cat(name_vector,ARRAY[]::integer[]) @> ARRAY[".join($aSearch['aNameNonSearch'], ",")."]";
                          if (sizeof($aSearch['aAddress']) && $aSearch['aName'] != $aSearch['aAddress']) {
                              // For infrequent name terms disable index usage for address
                              if (CONST_Search_NameOnlySearchFrequencyThreshold
                                  && sizeof($aSearch['aName']) == 1
                                  && $aWordFrequencyScores[$aSearch['aName'][reset($aSearch['aName'])]] < CONST_Search_NameOnlySearchFrequencyThreshold
                              ) {
 -                                $aTerms[] = "array_cat(nameaddress_vector,ARRAY[]::integer[]) @> ARRAY[".join(array_merge($aSearch['aAddress'], $aSearch['aAddressNonSearch']), ",")."]";
 +                                //$aTerms[] = "array_cat(nameaddress_vector,ARRAY[]::integer[]) @> ARRAY[".join(array_merge($aSearch['aAddress'], $aSearch['aAddressNonSearch']), ",")."]";
 +                                $aTerms[] = "array_cat(nameaddress_vector,ARRAY[]::integer[]) @> ARRAY[".join($aSearch['aAddress'],",")."]";
                              } else {
                                  $aTerms[] = "nameaddress_vector @> ARRAY[".join($aSearch['aAddress'], ",")."]";
 -                                if (sizeof($aSearch['aAddressNonSearch'])) {
 +                                /*if (sizeof($aSearch['aAddressNonSearch'])) {
                                      $aTerms[] = "array_cat(nameaddress_vector,ARRAY[]::integer[]) @> ARRAY[".join($aSearch['aAddressNonSearch'], ",")."]";
 -                                }
 +                                }*/
                              }
                          }
                          if ($aSearch['sCountryCode']) $aTerms[] = "country_code = '".pg_escape_string($aSearch['sCountryCode'])."'";
diff --combined sql/functions.sql
index 609d46c92c639567d58d8d1c7ee21678b110da60,949e4cae515ceccb006fe6a74ab24fb8790d3c35..b086786aa7a3544e2b1ff2f0f0ea73dffb8bdb58
@@@ -2343,7 -2343,7 +2343,7 @@@ BEGI
  
    IF for_place_id IS NULL THEN
      select parent_place_id, calculated_country_code, housenumber, rank_search, postcode, name, class, type from placex 
-       WHERE place_id = in_place_id and rank_address = 30 
+       WHERE place_id = in_place_id and  rank_search > 27
        INTO for_place_id, searchcountrycode, searchhousenumber, searchrankaddress, searchpostcode, searchhousename, searchclass, searchtype;
    END IF;
  
        CASE WHEN class = 'place' and type = 'postcode' THEN hstore('name', postcode) ELSE name END as 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,calculated_country_code,postcode
        from place_addressline join placex on (address_place_id = placex.place_id) 
index ba8cca9b1c1a3f94b142bd6727d4785ba8b092b3,34603aec8f18b02f15dce8e170f84d1f472232c4..5b7f10ada79026e269e9541497e203b0d510013e
@@@ -178,7 -178,7 +178,7 @@@ Feature: API regression test
       Scenario: trac #5238
          Given the request parameters
           | bounded | viewbox
 -         | 1       | 0,0,-1,-1
 +         | 1       | 0,0,1,-1
          When sending json search query "sy"
          Then exactly 0 results are returned
  
           | osm_type   | osm_id     | latlon
           | node       | 257363453  | 35.8404121,128.5586643 +-100m
  
+     Scenario: trac #5427
+         Given the request parameters
+          | countrycodes |
+          | DE           |
+         When sending json search query "12345" with address
+         Then result addresses contain
+          | country_code |
+          | de           |