首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php和levenshtein在MySQL查询中搜索相似的字符串

问使用php和levenshtein在MySQL查询中搜索相似的字符串
EN

Stack Overflow用户
提问于 2012-10-24 03:05:21
回答 1查看 805关注 0票数 1

我正在尝试找出在PHP中使用levenshtein()的“最佳”选项。

当用户在数据库中输入新客户时,我使用了一条PDO语句。

我要做的是在添加新客户之前进行查询搜索,看看该客户是否已经在数据库中,以避免可能的重复条目。我不能使用MATCH/AGAINST,因为这两次输入的客户可能都不一样。

这将根据数据库....检查名字。

代码语言:javascript
复制
$input1 = $_POST['FIRSTNAME'];

$result = array();
$count=1;
            $find = $dbh->query('SELECT BillingFirstName FROM Customers');

            while ($row = $find->fetch (PDO::FETCH_ASSOC))
                 {
                    $fn = $row['BillingFirstName'];
                    array_push($result, $fn);
                 }


        foreach ($result as $word) {

                    echo $word.'<br>';

                        $shortest = -1;
                        $lev = levenshtein($input1, $word);

                    if ($lev == 0) {

                        $closest = $word;
                        $shortest = 0;
                        break;
                    }

                    if ($lev <= $shortest || $shortest < 0) {

                        $closest  = $word;
                        $shortest = $lev;
                    }

            }


        echo "Input word: $input1\n";
        if ($shortest == 0) {
            echo "Exact match found: $closest\n";
        } else {
            echo "Did you mean: $closest?\n";
        }

我如何添加其余的细节,如姓氏,地址,州,邮编。

我甚至可以添加更多吗?或者我是否需要创建数组并对地址的每个部分进行循环?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 03:27:48

这将是令人难以置信的慢,特别是当数据库是任何大小的时候,你应该在MySQL(而不是php)中使用一个levenshtein函数。

这里有一个很好的例子:Levenshtein distance

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13037421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档