为了账号安全,请及时绑定邮箱和手机立即绑定

Levenshtein:MySQL + PHP

Levenshtein:MySQL + PHP

PIPIONE 2019-08-27 10:35:14
Levenshtein:MySQL + PHP$word = strtolower($_GET['term']); $lev = 0;$q = mysql_query("SELECT `term` FROM `words`"); while($r = mysql_fetch_assoc($q)) {      $r['term'] = strtolower($r['term']);      $lev = levenshtein($word, $r['term']);     if($lev >= 0 && $lev < 5)     {         $word = $r['term'];     }}如何将所有内容移动到一个查询中?不希望查询所有术语并在PHP中进行过滤。
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

你需要在MySQL中使用levenshtein函数并进行查询

$word = mysql_real_escape_string($word);mysql_qery("SELECT `term` FROM `words` WHERE levenshtein('$word', `term`) BETWEEN 0 AND 4");


查看完整回答
反对 回复 2019-08-27
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

如果您有一个庞大的数据库,您可以先使用SOUNDEX过滤单词:

$word = strtolower(mysql_real_escape_string($_GET['term']));$rs = mysql_query("SELECT LOWER(`term`) FROM `words` WHERE SOUNDEX(term) = SOUNDEX(" . $word . ")");while ($row = mysql_fetch_assoc($rs)) { 

    $lev = levenshtein($word, $row['term']);

    ....}

如果你有足够的时间玩C扩展或程序,你可以获得更好的性能,但在应用真正的levenshtein之前过滤mysql上的记录将使事情变得更快,几乎不费力。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 514 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信