X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/9e0a92a508743d3bc30b332e94742eeeb5cb8ce2..27e6a24718e7d778b6b69df78cf5558aa9917f56:/lib/lib.php diff --git a/lib/lib.php b/lib/lib.php index 998e0429..3417c95b 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -165,18 +165,20 @@ } - function getWordSets($aWords) + function getWordSets($aWords, $iDepth) { $aResult = array(array(join(' ',$aWords))); $sFirstToken = ''; - while(sizeof($aWords) > 1) - { - $sWord = array_shift($aWords); - $sFirstToken .= ($sFirstToken?' ':'').$sWord; - $aRest = getWordSets($aWords); - foreach($aRest as $aSet) + if ($iDepth < 8) { + while(sizeof($aWords) > 1) { - $aResult[] = array_merge(array($sFirstToken),$aSet); + $sWord = array_shift($aWords); + $sFirstToken .= ($sFirstToken?' ':'').$sWord; + $aRest = getWordSets($aWords, $iDepth+1); + foreach($aRest as $aSet) + { + $aResult[] = array_merge(array($sFirstToken),$aSet); + } } } return $aResult; @@ -783,20 +785,6 @@ } - function getWordSuggestions(&$oDB, $sWord) - { - $sWordQuoted = getDBQuoted(trim($sWord)); - $sSQL = "select *,levenshtein($sWordQuoted,word) from test_token "; - $sSQL .= "where (metaphone = dmetaphone($sWordQuoted) or metaphonealt = dmetaphone($sWordQuoted) or "; - $sSQL .= "metaphone = dmetaphone_alt($sWordQuoted) or metaphonealt = dmetaphone_alt($sWordQuoted)) "; - $sSQL .= "and len between length($sWordQuoted)-2 and length($sWordQuoted)+2 "; - $sSQL .= "and levenshtein($sWordQuoted,word) < 3 "; - $sSQL .= "order by levenshtein($sWordQuoted,word) asc, abs(len - length($sWordQuoted)) asc limit 20"; - $aSimilar = $oDB->getAll($sSQL); - return $aSimilar; - } - - function geocodeReverse($fLat, $fLon, $iZoom=18) { $oDB =& getDB(); @@ -896,7 +884,7 @@ return $iPlaceID; } - function loadStructuredAddressElement(&$aStructuredQuery, &$iMinAddressRank, &$iMaxAddressRank, $aParams, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank) + function loadStructuredAddressElement(&$aStructuredQuery, &$iMinAddressRank, &$iMaxAddressRank, &$aAddressRankList, $aParams, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank, $aItemListValues) { if (!isset($_GET[$sKey])) return false; $sValue = trim($_GET[$sKey]); @@ -907,5 +895,11 @@ $iMinAddressRank = $iNewMinAddressRank; $iMaxAddressRank = $iNewMaxAddressRank; } + if ($aItemListValues) $aAddressRankList = array_merge($aAddressRankList, $aItemListValues); return true; } + + function addQuotes($s) + { + return "'".$s."'"; + }