灵感来自于 [嘉兴ing](https://segmentfault.com/a/1190000019137933 "Trie树 php 实现敏感词过滤")
感谢分享.
本文主要是针对上文添加了自己的理解,以及增加了通过屏蔽等级灵活控制敏感词过滤。
代码适用场景:
1.特殊时间需要大规模针对某些敏感词进行敏感词检测
2.敏感词除了精确匹配外还需要模糊匹配,如傻lkaj瓜
3.针对不同时期(例如重大节假日),或者是不同级别的项目,对敏感词的校验严格度不同,进行进一步处理。
实现逻辑
通过前缀树/字典树 算法,通过利用字符串的公共前缀来节约存储空间。
例如当前敏感词数组为:['傻瓜','傻瓜蛋','傻子']
当要匹配的字符串中含有 '傻瓜'、'傻子'时,下图字典树示例中的红色边框则为对应的终止节点。
字典树如图所示:
首先需要通过敏感词字典文件将敏感词初始化字典树,
然后在字典树上搜索添加过的字符串。
其步骤如下:
1.从根结点开始搜索。
2.取得要查找字符串的第一个字符,根据该字符选择对应的字符路径向下继续搜索。
3.如果字符串搜索完成后,判断当前是否已经是对应敏感字符路径的终止节点,如果是的话,说明字典树中含有该字符串,