From: Sarah Hoffmann Date: Fri, 6 Apr 2018 20:20:21 +0000 (+0200) Subject: do not apply limit to house number place searches X-Git-Tag: v3.2.0~96^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/efac4a135a13690a964b1b6aaa046d084df70f29?ds=sidebyside do not apply limit to house number place searches Searches for house numbers are already limited by the number of parent places. In fact, the limit assumed that every parent place has exactly one match against the given housenumber. That is not true in reality and so we were dropping relevant results. Fixes #329. --- diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index 276f4c98..6345f50f 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -436,7 +436,7 @@ class SearchDescription //now search for housenumber, if housenumber provided if ($this->sHouseNumber && !empty($aResults)) { $aNamedPlaceIDs = $aResults; - $aResults = $this->queryHouseNumber($oDB, $aNamedPlaceIDs, $iLimit); + $aResults = $this->queryHouseNumber($oDB, $aNamedPlaceIDs); if (empty($aResults) && $this->looksLikeFullAddress()) { $aResults = $aNamedPlaceIDs; @@ -717,7 +717,7 @@ class SearchDescription return $aResults; } - private function queryHouseNumber(&$oDB, $aRoadPlaceIDs, $iLimit) + private function queryHouseNumber(&$oDB, $aRoadPlaceIDs) { $aResults = array(); $sPlaceIDs = Result::joinIdsByTable($aRoadPlaceIDs, Result::TABLE_PLACEX); @@ -731,7 +731,6 @@ class SearchDescription $sSQL .= 'WHERE parent_place_id in ('.$sPlaceIDs.')'; $sSQL .= " AND transliteration(housenumber) ~* E'".$sHouseNumberRegex."'"; $sSQL .= $this->oContext->excludeSQL(' AND place_id'); - $sSQL .= " LIMIT $iLimit"; Debug::printSQL($sSQL); @@ -759,7 +758,6 @@ class SearchDescription $sSQL .= $iHousenumber.'>=startnumber and '; $sSQL .= $iHousenumber.'<=endnumber'; $sSQL .= $this->oContext->excludeSQL(' AND place_id'); - $sSQL .= " limit $iLimit"; Debug::printSQL($sSQL); @@ -776,7 +774,6 @@ class SearchDescription $sSQL .= ' WHERE parent_place_id in ('.$sPlaceIDs.')'; $sSQL .= " AND housenumber = '".$this->sHouseNumber."'"; $sSQL .= $this->oContext->excludeSQL(' AND place_id'); - $sSQL .= " limit $iLimit"; Debug::printSQL($sSQL); @@ -798,7 +795,6 @@ class SearchDescription $sSQL .= $iHousenumber.'>=startnumber and '; $sSQL .= $iHousenumber.'<=endnumber'; $sSQL .= $this->oContext->excludeSQL(' AND place_id'); - $sSQL .= " limit $iLimit"; Debug::printSQL($sSQL);