]> git.openstreetmap.org Git - nominatim.git/commitdiff
better performance for place node search
authorgemo1011 <moritzgeiger91@web.de>
Mon, 23 Apr 2018 12:32:54 +0000 (14:32 +0200)
committergemo1011 <moritzgeiger91@web.de>
Tue, 5 Jun 2018 09:54:12 +0000 (11:54 +0200)
lib/ReverseGeocode.php

index ae7c852766781019a2c149f1ca3ff7e9bf379f0e..83f6c7e33105b5cb9840926902041d94e638767e 100644 (file)
@@ -87,7 +87,7 @@ class ReverseGeocode
         if ($aPoly) {
             $iParentPlaceID = $aPoly['parent_place_id'];
             $iRankSearch = $aPoly['rank_search'];
-            $iGeometry = $aPoly['geometry'];
+            $iPlaceID = $aPoly['place_id'];
             
             $sSQL = 'select place_id,parent_place_id,rank_search,country_code, linked_place_id,';
             $sSQL .='  ST_distance('.$sPointSQL.', geometry) as distance';
@@ -95,9 +95,10 @@ class ReverseGeocode
             $sSQL .= ' WHERE osm_type = \'N\'';
             $sSQL .= ' AND rank_search >= '.$iRankSearch;
             $sSQL .= ' AND rank_search <= LEAST(25, '.$iMaxRank.')';
-            $sSQL .= ' AND ST_CONTAINS(\''.$iGeometry.'\'::geometry, geometry )';
+            $sSQL .= ' AND ST_CONTAINS((SELECT geometry FROM placex WHERE place_id = '.$iPlaceID.'), geometry )';
             $sSQL .= ' AND type != \'postcode\'';
             $sSQL .= ' AND name IS NOT NULL ';
+            $sSQL .= ' AND class not in ( \'waterway\')';
             $sSQL .= ' ORDER BY distance ASC,';
             $sSQL .= ' rank_search DESC';
             $sSQL .= ' limit 1';