X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/6070c3d1d58fb8737b387e8a3ef1f17fb1eb5d54..1e9f37ab82db1758235bedf83c659693f4ca6c3e:/lib-php/tokenizer/legacy_tokenizer.php diff --git a/lib-php/tokenizer/legacy_tokenizer.php b/lib-php/tokenizer/legacy_tokenizer.php index ec2d7e68..570b8828 100644 --- a/lib-php/tokenizer/legacy_tokenizer.php +++ b/lib-php/tokenizer/legacy_tokenizer.php @@ -19,20 +19,20 @@ class Tokenizer { $sStandardWord = $this->oDB->getOne("SELECT make_standard_name('a')"); if ($sStandardWord === false) { - throw new Exception('Module failed', 701); + throw new \Exception('Module failed', 701); } if ($sStandardWord != 'a') { - throw new Exception('Module call failed', 702); + throw new \Exception('Module call failed', 702); } $sSQL = "SELECT word_id FROM word WHERE word_token IN (' a')"; $iWordID = $this->oDB->getOne($sSQL); if ($iWordID === false) { - throw new Exception('Query failed', 703); + throw new \Exception('Query failed', 703); } if (!$iWordID) { - throw new Exception('No value', 704); + throw new \Exception('No value', 704); } } @@ -137,14 +137,14 @@ class Tokenizer // Try more interpretations for Tokens that could not be matched. foreach ($aTokens as $sToken) { - if ($sToken[0] == ' ' && !$oValidTokens->contains($sToken)) { - if (preg_match('/^ ([0-9]{5}) [0-9]{4}$/', $sToken, $aData)) { + if ($sToken[0] != ' ' && !$oValidTokens->contains($sToken)) { + if (preg_match('/^([0-9]{5}) [0-9]{4}$/', $sToken, $aData)) { // US ZIP+4 codes - merge in the 5-digit ZIP code $oValidTokens->addToken( $sToken, new Token\Postcode(null, $aData[1], 'us') ); - } elseif (preg_match('/^ [0-9]+$/', $sToken)) { + } elseif (preg_match('/^[0-9]+$/', $sToken)) { // Unknown single word token with a number. // Assume it is a house number. $oValidTokens->addToken( @@ -218,9 +218,12 @@ class Tokenizer (int) $aWord['count'], substr_count($aWord['word_token'], ' ') ); - } else { + // For backward compatibility: ignore all partial tokens with more + // than one word. + } elseif (strpos($aWord['word_token'], ' ') === false) { $oToken = new Token\Partial( $iId, + $aWord['word_token'], (int) $aWord['count'] ); }