From e8c52c67807b883a6caef065c07fa89cda8710d7 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Mon, 2 Oct 2017 21:57:44 +0200 Subject: [PATCH] be more strict with searches involving house numbers Housenumber searches without a name cannot exist per definition. Searches with only a name but no address should not fall back on a search without house number. This should improve postcode only search. --- lib/Geocode.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/Geocode.php b/lib/Geocode.php index 0c2a9963..6961b630 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -910,6 +910,19 @@ class Geocode //if (CONST_Debug) _debugDumpGroupedSearches($aGroupedSearches, $aValidTokens); } + + // Revisit searches, giving penalty to unlikely combinations + $aGroupedSearches = array(); + foreach ($aSearches as $aSearch) { + if (!$aSearch['aName']) { + if ($aSearch['sHouseNumber']) { + continue; + } + } + $aGroupedSearches[$aSearch['iSearchRank']][] = $aSearch; + } + ksort($aGroupedSearches); + return $aGroupedSearches; } @@ -1563,7 +1576,8 @@ class Geocode } // Fallback to the road (if no housenumber was found) - if (!sizeof($aPlaceIDs) && preg_match('/[0-9]+/', $aSearch['sHouseNumber'])) { + if (!sizeof($aPlaceIDs) && preg_match('/[0-9]+/', $aSearch['sHouseNumber']) + && ($aSearch['aAddress'] || $aSearch['sCountryCode'])) { $aPlaceIDs = $aRoadPlaceIDs; //set to -1, if no housenumbers were found $searchedHousenumber = -1; -- 2.39.5