原理:基于多叉树的查找。
第一步:把敏感词读入搜索多叉树中,
树结构:
第二步,对需过滤的句子进行逐字匹配:
比如句子:解放了全中国
1、记录起始位置start=0,读到了“解”,匹配了搜索树中起始节点的的“解”字;
2、继续读入“放”,又匹配了搜索树中的下一节点的“放”字,此时其子节点的isEnd为true,即当前为一敏感词的结束位,则把当前匹配长度2放入临时变量length;
3、继续第2步,直到map中找不到相匹配的字;
4、如果length>0把从start到start+length的字符替换为“*”,从start+length重新开始第1步;
5、如果length=0,从start+1开始第1步。
本算法对纯文本匹配执行效率:5000字35毫秒
张人杰 2011.4.3
源码地址:GitHub - AlexZhangrj1981/sensitive-words-filter
下载地址:ranjio_z的资源