糟糕的levenshtein结果

时间:2014-07-17 16:00:24

标签: php levenshtein-distance

我有一个基于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

如你所见,我在第一次转储时得到的结果不好,但在第二次转储时结果不错。我认为问题与单词长度有关,但我无法弄清楚如何解决这个问题。 我的数组值至少包含两个单词。

1 个答案:

答案 0 :(得分:0)

你没有得到一个奇怪的结果。

通过http://writecodeonline.com/php进行测试。

我的Levenshtein距离小于阵列中第二个结果的距离。

请记住,Levenshtein距离是您必须对字符串进行的编辑计数,以便相应的字符串成为您比较的字符串。