可能的解决方案
在通常情况下,能够意识到这是一个悬而未解的问题很重要,人们尝试了一些在某些特定情况下可以工作的想法。这些方法,有的是个“死胡同”,但是有的当继续发展时,看起来像是可以在广泛的数据集上工作。
匹配多个字段
在第7章中,Jeff Jonas描述了一个假设的场景,可以通过结合名字和地址,发现某个员工是个小偷。在那种情况下,名字和地址的组合足以表明两种不同的记录实际上表示同一个人。Jeff可以很快地指出他遇到这样的情况,一个“Patrick Smith”和另一个“Patricia Smith”有相同的地址,而且都包含“Pat Smith”,因此如果你不注意,很容易陷入其他很明显的规则的迷宫中。
这说明了在数据集中匹配数据项时可用的最基本常见的方式:选择一组参数,创建一组固定的规则来告诉你事物间是否匹配。举个例子,“两个人是否有相同的名字和地址?”或者“两部电影是否有相同的名字并且是在同一年发布的?”
这种方法在很多情况下都适用,但是它存在一些缺点。首先,它需要开发人员识别字段和匹配规则。这种方式可能会非常乏味,因为当他们发现根据基本的名字/发布年份规则,《Prêt-à-Porter》和《Ready to Wear》不匹配时,他们需要发明另一种规则,如“两部电影在同一年发布,导演相同,而且至少有一个演员相同。”
另一个问题是它需要这些字段本身具有很高的一致性。如果我们没有演员的全名怎么办呢?如果在其中一个数据库丢失了某些电影的年份信息,那又该如何处理?最后,因为我们是选择特定的字段,然后生成平面记录,这种方式并没有充分利用全部网络的数据——全网数据潜在地可能为我们提供更多关于身份的信息。