我从用户那里收集 Facebook 好友列表,包括名字、姓氏、性别和出生日期。然后,我尝试将该名称数据库(作为 MySQL 中的表存储)与包含类似信息的另一个数据库进行比较。
在概念上链接这些结果的最佳方式是什么,第二个数据库是更大的记录集(>500k 行)?
这是我的提议:
- 迭代 Facebook 名称
- 搜索最后 + 出生日期 - 如果它们匹配,则假定“可信”匹配
- 搜索最后一个 + 第一个 - 如果它们匹配,则假定“可能”匹配
- 搜索 Last + Lichtenstein(First) 超过一定级别,假设“可能”匹配
我是否缺少一些分布式计算概念,这些概念可能会比顺序 mySQL 方法更快?注意到没有误报比错过记录更重要,还会出现哪些其他陷阱?
最佳答案
是的,你的想法似乎是一个更好的算法。
假设您关心性能,您可以使用缓存来存储刚刚搜索的值。您还可以开始在 NoSQL 数据库中对结果建立索引,这样结果会非常快,从而获得更好的读取性能。如果您必须使用 MySQL,请阅读 polyglot persistence 。
假设您关心的是简单性,您仍然可以在 NoSQL 数据库中使用索引,因此随着时间的推移,您不必进行无数会破坏用户和开发人员体验的联接。
可能还有更多的担忧,但这完全取决于您想在哪里使用它、在网站中使用它或用于此类数据分析目的。
关于mysql - 匹配 2 个姓名数据库,给出名字、姓氏、性别和出生日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032937/