]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib-php/SearchDescription.php
Merge pull request #3150 from alfmarcua/allow_neg_id_details
[nominatim.git] / lib-php / SearchDescription.php
index 65df58ef0850b120bbc4e5a1b7b8af19dfd9ef34..5d2caf0057b4585ec86dba94381526ad9afce07f 100644 (file)
@@ -236,7 +236,7 @@ class SearchDescription
      * Add the given full-word token to the list of terms to search for in the
      * name.
      *
      * Add the given full-word token to the list of terms to search for in the
      * name.
      *
-     * @param interger iId    ID of term to add.
+     * @param integer iId    ID of term to add.
      * @param bool bRareName  True if the term is infrequent enough to not
      *                        require other constraints for efficient search.
      */
      * @param bool bRareName  True if the term is infrequent enough to not
      *                        require other constraints for efficient search.
      */
@@ -264,6 +264,8 @@ class SearchDescription
     {
         if (empty($this->aName)) {
             $this->bNameNeedsAddress = $bNeedsAddress;
     {
         if (empty($this->aName)) {
             $this->bNameNeedsAddress = $bNeedsAddress;
+        } elseif ($bSearchable && count($this->aName) >= 2) {
+            $this->bNameNeedsAddress = false;
         } else {
             $this->bNameNeedsAddress &= $bNeedsAddress;
         }
         } else {
             $this->bNameNeedsAddress &= $bNeedsAddress;
         }
@@ -385,7 +387,7 @@ class SearchDescription
      *
      * @return mixed[] An array with two fields: IDs contains the list of
      *                 matching place IDs and houseNumber the houseNumber
      *
      * @return mixed[] An array with two fields: IDs contains the list of
      *                 matching place IDs and houseNumber the houseNumber
-     *                 if appicable or -1 if not.
+     *                 if applicable or -1 if not.
      */
     public function query(&$oDB, $iMinRank, $iMaxRank, $iLimit)
     {
      */
     public function query(&$oDB, $iMinRank, $iMaxRank, $iLimit)
     {
@@ -805,6 +807,7 @@ class SearchDescription
                 $sSQL = 'SELECT geometry FROM placex';
                 $sSQL .= " WHERE place_id in ($sPlaceIDs)";
                 $sSQL .= "   AND rank_search < $iMaxRank + 5";
                 $sSQL = 'SELECT geometry FROM placex';
                 $sSQL .= " WHERE place_id in ($sPlaceIDs)";
                 $sSQL .= "   AND rank_search < $iMaxRank + 5";
+                $sSQL .= '   AND ST_Area(Box2d(geometry)) < 20';
                 $sSQL .= "   AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')";
                 $sSQL .= ' ORDER BY rank_search ASC ';
                 $sSQL .= ' LIMIT 1';
                 $sSQL .= "   AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')";
                 $sSQL .= ' ORDER BY rank_search ASC ';
                 $sSQL .= ' LIMIT 1';