可能使用Levenshtein距离匹配搜索词的准确性

use*_*660 6 php mysql cpu-word matching levenshtein-distance

我有一个mySQL表,人们可以在其中添加他们的名字和兴趣.我想使用某种单词匹配,找到100%匹配或近似匹配.我听说过levenshtein距离,但不知道如何让它循环通过我的桌子.

    $input = $_POST["interest"];
    $result = mysql_query("SELECT interest_desc FROM interests");
Run Code Online (Sandbox Code Playgroud)

做了一些谷歌搜索,并达到了这一点

   function closest($seed, $haystack){
   $shortest = -1;
     foreach ($haystack as $word){
      $lev = levenshtein($seed, $word);
       if ($lev == 0) {
           $closest = $word; $shortest = 0; break;
       }
       if ($lev <= $shortest || $shortest < 0) {
       $closest  = $word; $shortest = $lev;
       }
}
return $closest;
}
$array = mysql_fetch_row($result);
$closestmatch = closest($input,$array);
echo $closetmatch;
Run Code Online (Sandbox Code Playgroud)

Mes*_*San 1

我认为 SOUNDEX 是您的一个选择。

Lo Sauer文章可以帮助您

http://www.lsauer.com/2013/05/mysql-fuzzy-searching-fulltext-queries.html