【发布时间】:2015-08-21 23:53:12
【问题描述】:
我有两个大约 70 000 行的表。两个表都有一列“标题”。我需要与表格进行比较并通过标题列找到它们的交集。我尝试使用 JOIN 和 UNION,但标题可能略有不同。我的意思是,在一张桌子上可以是 New-York, USA,但在另一张桌子上可以是 New York Usa。我用谷歌搜索了它,它称之为“模糊字符串搜索”。
我已经开始使用 php 和similar_text,但它非常慢......我认为对于这个任务我应该使用其他东西,比如 R 也许......我已经将这些数据推送到BigQuery,但是 BigQuery 只支持 REGEXEP 在 where 语句中进行搜索,或者我不明白应该如何使用它。
R 能快速解决我的问题吗?
谢谢!
dataset1 的示例:
new-york, usa|100|5000
dataset2:
newyork usa|50|1000
nnNew-York |10|500
所需输出示例:
New-York, Usa|160|6500
换句话说,我需要创建一个包含两个表中的数据的新表。
更新
感谢您的回答,我尝试了 R 和 agrep,它可以工作,但是非常缓慢.. 40 分钟内有 2 000 行,我总共有 190 000 行。正常吗?
【问题讨论】:
-
您必须提供示例数据集和所需的输出。否则很难帮你。
-
是的 R 可以解决这个问题。有关模糊搜索,请参阅
agrep和adist。自己尝试,速度是另一段历史。 -
模糊匹配是个棘手的问题。看起来您可能从一张桌子到另一张桌子有多个匹配项。这增加了误报的风险。那是因为您将无法告诉引擎在找到匹配项后停止搜索。例如'New York USA 与 new-York、nnNew York 和 Newark 相匹配'
-
BigQuery 将能够在这里提供帮助 - 只要您能够在 SQL 中编写自己的 Javascript 函数。很快!
标签: php mysql r google-bigquery