php - 相似数据算法

标签 php c++ algorithm email similarity

我有几个用户信息数据库,每个 10k-20k 条目,每个都来自几个不同的来源,并且每个都在不断增长。我正在寻找创建一个工具,可以在一定的容差范围内注意到相似的电子邮件或相似的名称(first + ' ' + last )。我正在运行一个 MySQL 数据库,并且可以使用 C++ 或 PHP 来运行比较。任何人都可以建议任何现有的解决方案/教程,让我只对数据库或数据数组进行检查并返回可能的重复项吗?我只是希望它能发现一些像这样的常见错误:

josh@test.com <> josh@test.test.com <> jash@test.com
Josh O <> josh t O <> Joshua O

也许可以将公差调整到条目之间一定数量的字符差异内?非常非常感谢您提供任何建议或解决方案,我在谷歌搜索上没有取得太大成功。

最佳答案

我有一些好消息要告诉你,也有一些坏消息要告诉你。

好消息是 PHP 实现了一些算法来比较内置的字符串:

它还有两种比较流行的方法,可以将英文单词分解成更简单的适合比较的表示形式:

虽然这是个好消息,但可怕的消息是,对于 10-20k 个条目,如果您使用前两个选项,您将需要执行接近 1.5 公吨的比较,而且它们不是伟大的表演者。我不太确定大 O 表示法是什么,但我认为它在 O(run away) 范围内。

使用后两个函数预先计算相似性分解,然后对生成的数据使用某种分组操作可能被证明是一个重要的性能和时间胜利。

关于php - 相似数据算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5276150/

相关文章:

algorithm - 如何在 1491625 这样的数字中找到第 n 个数字......?

java - 保护 REST API

php - 使用 MySQL 限制每天发送的访问者

c++ - 如何将 "\u94b1"之类的字符串转换为 C++ 中的一个真实字符?

c++ - push_back 上的 STL 列表段错误

从零开始的 Java PRNG

php - 手动添加图像到产品 - Magento 1.4.0.1

Php Ajax foreach 循环故障

c++ - 如何强制对模板参数类型进行签名?

algorithm - 如何按价格和速度对 10 x 10 的二维网格中的 100 辆汽车图像进行排序?