我有2个csv文件,文件F1中有大约22K记录,文件F2中有50K记录,两个都包含公司名称和地址信息.我需要在名称,地址和电话上进行模糊匹配.F1中的每条记录都需要与F2中的每条记录进行模糊匹配.我已经制作了第三个文件R3,它是一个包含模糊匹配规则的csv,从F1到F2列的列,具有模糊容差级别.我试图用for循环这样做 - 这样 -
(for [j f1-rows
h f2-rows
r r3-rows
:while (match-row j h r)]
(merge j h))
(defn match-row [j h rules]
(every?
identity
(map (fn [rule]
(<= (fuzzy/jaccard
((keyword (first rule)) j)
((keyword (second rule)) h))
((nth rule 2))))
rules)))
Run Code Online (Sandbox Code Playgroud)
f1-rows和f2-rows是map的集合.规则是包含来自f1,f2的列名和容差级别的序列的集合.代码正在运行并按预期运行.但我的问题是,执行大约需要2个小时.我读到了传感器如何通过消除中间块来帮助提高性能,但我无法想象我将如何应用于我的情况.关于如何让这更好/更快的任何想法?