我有一个基于levenshtein的字符串比较函数,但它不能正常工作。
function levenshteinTest($input, $array)
{
$shortest = -1;
foreach ($array as $word)
{
$lev = levenshtein($input, $word);
if ($lev == 0)
{
$closest = $word;
$shortest = 0;
break;
}
if ($lev <= $shortest || $shortest < 0)
{
$closest = $word;
$shortest = $lev;
}
}
return $closest;
}
$test=array(
"Richard Bürstmayr",
"Sandra Ebner"
);
var_dump(levenshteinTest("brstmyr", $test); //Sandra Ebner
var_dump(levenshteinTest("rd brstmyr", $test); //Richard Bürstmayr正如您所看到的,我在第一个转储中得到了一个不好的结果,但在第二个转储中得到了一个好结果。我认为这个问题与单词长度有关,但我真的不知道如何解决这个问题。我的数组值包含所有至少两个单词。
发布于 2014-07-18 00:11:51
你不会得到一个奇怪的结果。
通过http://writecodeonline.com/php进行测试。
我得到的Levenshtein距离比数组中第二个结果的距离小。
请记住,Levenshtein distance是您必须对字符串进行编辑的次数,以使相应的字符串成为与之进行比较的字符串。
https://stackoverflow.com/questions/24808369
复制相似问题