- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有两个格式不同的数据库。每个数据库都包含姓名、出生日期和地址等个人数据。它们都相当大,一个约为 50,000 个条目,另一个约为 150 万个。
我的问题是比较条目并找到可能的匹配项。理想情况下,生成某种表示数据匹配程度的百分比。我考虑过涉及生成多个索引或基于 Levenshtein 距离进行搜索的解决方案,但这些似乎都不是最优的。索引很容易错过接近的匹配项,而 Levenshtein 距离对于这种数据量来说似乎太昂贵了。
最佳答案
让我们试着把一些想法放在一起。一般情况太宽泛,这些只是指南/提示/其他。
通常您需要的不是真/假匹配关系,而是每个候选匹配项的得分。那是因为您永远无法完全确定候选人是否真的匹配。
分数是一对多的关系。您应该准备好根据主数据库的几条记录对小型数据库的每条记录进行排名。
每种比赛都应该分配一个权重和一个分数,加起来就是那对的总分。
您应该尝试比较尽可能小的片段以检测部分匹配。不要比较 [address],而是尝试比较 [city] [state] [street] [number] [apt]。
有些领域需要特殊对待,但这个问题对于这个答案来说太宽泛了。只是一些提示。名称和前缀中的中间首字母可以增加一些分数,但应保持在最低限度(因为它们被多次跳过)。电话号码可能有可变的前缀和后缀,因此有时需要进行子串匹配。根据数据质量,名字和姓氏必须转换为 soundex 或类似的。街道名称通常是规范化的,但它们可能缺少前缀或后缀。
如果您需要高质量的输出,请准备好长时间运行。
通常会设置一个百分比阈值,因此如果在部分处理一对后,并且在 y 的最大值中获得小于 x 的分数,则丢弃该对。
如果您知道某些字段必须匹配才能将一对视为候选,这通常会大大加快整个过程。
用于比较的数据结构很关键,但我觉得我的特殊经验不会对你有帮助,因为我总是在大型机上做这种事情:非常高速的磁盘、大量的内存和大量的并行性.我认为与一般情况相关的是什么,如果您觉得对它有帮助可能会有用。
喂!
PS:几乎是个笑话:在几年前我管理的一个大项目中,我们在两个数据库中都有母亲的婚前姓氏,并且我们给两个姓氏匹配的事实打了高分(个人和他母亲的姓氏) ).士气:所有 Smith->Smith 都是同一个人 :)
关于algorithm - 根据姓名、DoB、地址等匹配人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536278/
我正在使用 ajax 实时搜索来选择名称和姓氏的串联与输入的文本匹配的所有用户,并且效果很好: $sql = "SELECT * FROM users WHERE concat(name,' ',su
我尝试建立一个注册表单。该注册表单为名为“address1”的文本框,其附近有一个名为“Add Address”的按钮。该按钮的功能 - 添加更多地址的文本框。先前地址框附近的按钮更改为“删除”,从而
我一直在尝试制作一个验证电话号码和姓名的表单,但无论何时输入提交,无论字段是否填写,它都只会输入相同的消息。消息不断出现,我想不通 预计到达时间:http://jsfiddle.net/6W3uU/
我正在寻找验证 上的姓名和电子邮件输入的代码 我希望用户名只有 A-Z , a-z并且必须有一个下划线 _ , 电子邮件应该有一个 @ .我怎样才能用 jQuery 做到这一点? 表格(示例):
我在db中有一个带有id,name和parent的部门表.parent是与父root对应的id。现在我已经显示了id(父id),但是我想显示与之对应的部门的名称我已经在Departmentcontro
我正在尝试显示平均分最高的 worker 的姓名。我的第一个表是 worker 表并存储 worker_id 和 worker_name。第二张表是测试表,存储了参加测试的worker_id、test
用什么方法或变量可以找到本例中父对象的名称?也就是说,当鼠标悬停在第一个按钮上时,获取名称 $GetParentName = "Button01",第二个 $GetParentName = "Butt
我有一个数据库,其中一个表中有父名称。列:id、名称。以及其他表中的id、parent_id、name。在搜索字段中我输入名称。更不用说鲍勃、爱丽丝和汤姆了。我必须在数据库中搜索 child 名为鲍勃
我有以下查询: SELECT ty.id, ty.type, ty.pid, if(ty.pid = 0, '-', (select ty.type from bid_type ty w
我有一个如下所示的数据库: CREATE TABLE Persons ( id int, parentID int, name varchar(255) ); INSERT I
我无法获得预期的结果我希望我的程序显示任何人都可以帮助我。该程序用于打印结构中列出的 worker 姓名,如果您不输入任何这些姓名,我应该打印不存在的 worker 姓名。有人可以告诉我要使用的代码/
我正在读取 JSON 对象并以表格格式名称和文本在 html 中显示它们,但无法使用 javascript 获取节点的父名称 { "A": { "B": "Text",
当用户在我的 iPad 报亭应用上购买杂志订阅时,他们会收到分享一些信息的提示: 分享您的信息? [此处的应用名称] 的发布者希望根据他们的隐私政策使用您的姓名、电子邮件和邮政编码。 但是,我似乎无法
我有一大堆电子邮件,需要从中提取信息。我最近接手了一个网站,该网站将客户的所有联系信息存储在电子邮件中。他们想要开始将其存储在数据库中。我正在使用 Java 来尝试提取这些信息。我有点陷入困境。 我能
我有一个使用 qbXml 和 Intuit Web 连接器与 QuickBooks 同步的应用程序。 我在查询帐户时注意到一些异常行为。根据规范,一个帐户的全名应该包括它的任何祖先的名字,用冒号分隔。
下面是一个更大的数据框的示例。 Fare Cabin Pclass Ticket Name 257 86.5000 B77 1 110152
我在我的 Program.cs 文件中有一个方法要实现。当该方法遍历作业列表(其中每个作业都是一个字典)时,它应该打印: ***** name: Data Scientist / Business I
如何从包含三列的表格中查找第二高薪水,这些列是id、name、 salary,但在SELF JOIN中使用。通过嵌套查询得到答案。但是,我想知道我们如何使用 SELF JOIN 构建框架 最佳答案 如
我想在 WooCommerce 中运行 SQL 查询来选择所有没有订单、姓名、实际地址和电话号码的用户。我已经运行了以下代码,但它对我不起作用。 SELECT * FROM wp_usermeta
给定(例如): Dog breeds (Name) | id Labrador Retriever | A1 German Shepherd | A2 Golden Retriever |
我是一名优秀的程序员,十分优秀!