|
|
|
# 高效敏感词过滤
|
|
|
|
|
|
|
|
[TOC]
|
|
|
|
|
|
|
|
## 性能概述
|
|
|
|
|
|
...
|
...
|
@@ -16,6 +15,7 @@ |
|
|
|
## 优化方式
|
|
|
|
|
|
|
|
主要的优化目标是速度,从以下方面优化:
|
|
|
|
|
|
|
|
1. 敏感词都是2个字以上的,
|
|
|
|
2. 对于句子中的一个位置,用2个字符的hash在稀疏的hash桶中查找,如果查不到说明一定不是敏感词,则继续下一个位置。
|
|
|
|
3. 2个字符(2x16位),可以预先组合为1个int(32位)的mix,即使hash命中,如果mix不同则跳过。
|
|
...
|
...
|
@@ -41,7 +41,7 @@ System.out.println(filter.filter("会上,主席进行了发言。", '*')); |
|
|
|
会上,**进行了发言。
|
|
|
|
```
|
|
|
|
|
|
|
|
## 代码只有3个类如下
|
|
|
|
## 代码只有3个类直接贴上
|
|
|
|
|
|
|
|
|
|
|
|
### SensitiveFilter.java
|
...
|
...
|
|