我有5万家公司的数据库,不断更新(每月200个).
重复内容是一个巨大的问题,因为名称并不总是严格/正确:
“超级1商店”
“超级一店”
“超级1商店”
编辑:另一个例子……可能需要不同的方法:
“Amy’s Pizza”< ---> “Amy and Company的有机披萨”
我们需要工具来扫描数据以寻找相似的名称.
我对Levenshtein Distance和LCS有一些经验,但如果2个字符串相似,它们可以很好地进行比较…
在这里,我必须扫描50 000个名称,每个可能是每个,并在那里计算…整体相似性评级……
我需要建议如何攻击这个问题,预期的结果是有一个列表与10-20组非常相似的名称,并可能进一步调整灵敏度以获得更多结果.
最佳答案
我有一年前左右的类似问题,如果我记得很清楚,我解决了(或多或少)使用similar_text和soundex,正如其他人在评论中所说.像这样的东西:
PHP
$str1 = "Store 1 for you";
$str2 = "Store One 4 You";
similar_text(soundex($str1),soundex($str2),$percent);
if ($percent >= 66){
echo "Equal";
//Send an email for review
}else{
echo "Different";
//Proceed to insert in database
}
?>
在我的情况下,使用66%的百分比来确定公司是相同的(在这种情况下,不要插入数据库,但发送电子邮件给我审查,并检查是否正确).