1.1 简介
敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的,这里介绍一种敏感词过滤算法叫DFA算法在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextstate,通过这种算法可以有效的进行敏感词过滤。
1.2 背景
现在基本上所有的网站都需要设置敏感词过滤,这似乎已经成了一个网站的标配,如果你的网站没有,或者你没有做相应的处理,那么我们的网站可能因涉嫌有敏感政治倾向、暴力倾向、不健康色彩的词或不文明语等会被封杀,因此,我们系统需要集成开发一个敏感词过滤服务。
1.3 开发思想
将文本段敏感词替换成特定字符(*)
DFA实现思路:
1.采用Map的hash机制,将敏感词单个拆分,以第一个字符为key,其他值依旧使用map相连,想成了大Map套用小Map
2.遍历需要过滤的字符串获取每一个字符,根据get(key)来检测是否是敏感词
案例中写了两个项目:一个是敏感词存放在txt文本中的项目,另一个是敏感词存放在数据库中的项目,下载地址如下: