每天微博接收的上百万条数据,每条评论都在几十到一百多之间,问如何能最快的查找出里面的敏感词汇?

当时笔试问到的一个问题,如题.当时脑子想的是用正则匹配,但是估计会炸了....回来查了好多资料,貌似是用AC算法这种东西,对算法真的不了解,大神们觉得怎么处理比较好呢?

阅读 6.6k
3 个回答

这些应用都是多台部署的,后台多台机器会提供敏感词验证服务接口,任务平摊给多个机器,速度自然很快了。

在自己公司内部技术wiki上搜索了一下,我司使用的敏感词算法是:Aho Corasick自动机结合DoubleArrayTrie极速多模式匹配 ,我司主要用的是java实现的,应该也有php版本的实现,你自己去找找吧。

一般用DFA算法。正则可以做到。不过效率太低了

用PHP做过类似的应用demo,也是用的ac,其实算法这东西,如果你不是研究算法,只是单纯的用的话其实不难的。

这是匹配算法。
然后还有一点的就是语言,这种要求运行速度的最好别选PHP,脚本语言总是没有静态语言跑的快。然后是敏感词的存储,从内存中拿和从磁盘上拿这两个区别还是蛮大的。
然后是一台服务器上多线程处理,多台服务器的分布式处理;暂时想到的就这些了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题