多模式匹配算法,高效解决词典很大的模糊匹配问题
因为属于公司的数据部门,所以会接到一些产品,或者数据策略组 同事的数据需求,
其中一个需求如下:为了评估一批词的如果加入黑名单会造成的收入损失,采用模糊匹配参照其过去一段时间的收入来作为考量指标。
原始需求:模糊命中 附件中XXX多个词的 关键词的消费数据,取消费数据中过去一周的数据。
最终输出所有词及其对应的周汇总消费数据。
那么其实大数据情况下(约每天1亿个关键词),都需要取和词典中的每个词进行一次模糊匹配。
解决方案一:hive 中写transform,利用自定义map的方式,将每行记录与这批词进行一次 模糊匹配。
总结:简单、可行,当词典数目不是很大的时候,基本事件耗费在mapreduce,效率不是很低,满足需求。
优化方案二:当词典很大很大的时候,字符串逐个匹配的性能急剧下降,利用【Wu-Manber 经典多模式匹配算法】,解决该问题。
算法详情转个介绍连接:http://blog.csdn.net/pi9nc/article/details/9124623
总结:当需要模糊匹配的字典,特别大的时候,Wu-Manber 算法性能并不会随着 词典数的增加而明显增加,性能nice。
Winners see the gain; Losers see the pain.