【发布时间】:2009-12-24 11:30:57
【问题描述】:
我在一个数组中有 5000 个,有时甚至更多的街道地址字符串。我想将它们与 levenshtein 进行比较以找到相似的匹配项。如果不遍历所有 5000 并直接将它们与其他所有 4999 进行比较,我该如何做到这一点?
编辑:如果有人有建议,我也对替代方法感兴趣。总体目标是根据用户提交的街道地址找到相似的条目(并消除重复项)。
【问题讨论】:
-
关于您的更新,您可能需要应用一些输入清理以使您的生活更轻松。 (例如:如果您在存储之前将“Ave”转换为“Avenue”,“Rd”转换为“Road”等,则使用 soundex 将成为更现实的选择。)
-
如何定义相似地址?您是否有一些 Lehvenstein 距离的最大值是相似性的限制等?
-
类似的将是“12 Bird Road, Apt 6”和“12 Bird Rd. #6”
-
“923 Bird Road, Apt 6”和“23 Bird Road, Apt 6”怎么样?它们相似吗? Lehvenstein 距离会说它们是,毕竟只有一个字符差异,但在地理上人们可以认为它们不是很相似。
-
@Juha:这是一个很好的观点。另外,我的地址集中在方圆一百英里内。所以使用原始的 Levenshtein 可能毫无价值。
标签: php database similarity street-address levenshtein-distance