X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/555362eabefadca367f6262290874bf265c387ed..a5a0e1dd0b08321f473ac5ebf934cac8c39462d6:/lib/Geocode.php?ds=sidebyside diff --git a/lib/Geocode.php b/lib/Geocode.php index 9ee812d4..7bd4f552 100644 --- a/lib/Geocode.php +++ b/lib/Geocode.php @@ -222,9 +222,12 @@ foreach(explode(',',$aParams['exclude_place_ids']) as $iExcludedPlaceID) { $iExcludedPlaceID = (int)$iExcludedPlaceID; - if ($iExcludedPlaceID) $aExcludePlaceIDs[$iExcludedPlaceID] = $iExcludedPlaceID; + if ($iExcludedPlaceID) + $aExcludePlaceIDs[$iExcludedPlaceID] = $iExcludedPlaceID; } - $this->aExcludePlaceIDs = $aExcludePlaceIDs; + + if (isset($aExcludePlaceIDs)) + $this->aExcludePlaceIDs = $aExcludePlaceIDs; } // Only certain ranks of feature @@ -868,10 +871,10 @@ preg_match_all('/\\[([\\w ]*)\\]/u', $sQuery, $aSpecialTermsRaw, PREG_SET_ORDER); $aSpecialTerms = array(); - if (isset($aStructuredQuery['amenity']) && $aStructuredQuery['amenity']) + if (isset($this->aStructuredQuery['amenity']) && $this->aStructuredQuery['amenity']) { - $aSpecialTermsRaw[] = array('['.$aStructuredQuery['amenity'].']', $aStructuredQuery['amenity']); - unset($aStructuredQuery['amenity']); + $aSpecialTermsRaw[] = array('['.$this->aStructuredQuery['amenity'].']', $this->aStructuredQuery['amenity']); + unset($this->aStructuredQuery['amenity']); } foreach($aSpecialTermsRaw as $aSpecialTerm) { @@ -969,8 +972,8 @@ foreach($aDatabaseWords as $aToken) { // Very special case - require 2 letter country param to match the country code found - if ($bStructuredPhrases && $aToken['country_code'] && !empty($aStructuredQuery['country']) - && strlen($aStructuredQuery['country']) == 2 && strtolower($aStructuredQuery['country']) != $aToken['country_code']) + if ($bStructuredPhrases && $aToken['country_code'] && !empty($this->aStructuredQuery['country']) + && strlen($this->aStructuredQuery['country']) == 2 && strtolower($this->aStructuredQuery['country']) != $aToken['country_code']) { continue; } @@ -1094,7 +1097,7 @@ if (CONST_Debug) var_Dump($aGroupedSearches); - if (CONST_Search_TryDroppedAddressTerms && sizeof($aStructuredQuery) > 0) + if (CONST_Search_TryDroppedAddressTerms && sizeof($this->aStructuredQuery) > 0) { $aCopyGroupedSearches = $aGroupedSearches; foreach($aCopyGroupedSearches as $iGroup => $aSearches) @@ -1591,9 +1594,11 @@ $aRecheckWords = preg_split('/\b[\s,\\-]*/u',$sQuery); foreach($aRecheckWords as $i => $sWord) { - if (!$sWord) unset($aRecheckWords[$i]); + if (!preg_match('/\pL/', $sWord)) unset($aRecheckWords[$i]); } + if (CONST_Debug) { echo 'Recheck words:<\i>'; var_dump($aRecheckWords); } + foreach($aSearchResults as $iResNum => $aResult) { if (CONST_Search_AreaPolygons) @@ -1752,7 +1757,7 @@ if (stripos($sAddress, $sWord)!==false) { $iCountWords++; - if (preg_match("/(^|,)\s*$sWord\s*(,|$)/", $sAddress)) $iCountWords += 0.1; + if (preg_match("/(^|,)\s*".preg_quote($sWord, '/')."\s*(,|$)/", $sAddress)) $iCountWords += 0.1; } }