我正在尝试找出在PHP中使用levenshtein()的“最佳”选项。
当用户在数据库中输入新客户时,我使用了一条PDO语句。
我要做的是在添加新客户之前进行查询搜索,看看该客户是否已经在数据库中,以避免可能的重复条目。我不能使用MATCH/AGAINST,因为这两次输入的客户可能都不一样。
这将根据数据库....检查名字。
$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";
}我如何添加其余的细节,如姓氏,地址,州,邮编。
我甚至可以添加更多吗?或者我是否需要创建数组并对地址的每个部分进行循环?
发布于 2012-10-24 03:27:48
这将是令人难以置信的慢,特别是当数据库是任何大小的时候,你应该在MySQL(而不是php)中使用一个levenshtein函数。
这里有一个很好的例子:Levenshtein distance
https://stackoverflow.com/questions/13037421
复制相似问题