敏感词系列

sensitive-word-admin 敏感词控台 v1.2.0 版本开源

sensitive-word-admin v1.3.0 发布 如何支持分布式部署?

01-开源敏感词工具入门使用

02-如何实现一个敏感词工具?违禁词实现思路梳理

03-敏感词之 StopWord 停止词优化与特殊符号

04-敏感词之字典瘦身

05-敏感词之 DFA 算法(Trie Tree 算法)详解

06-敏感词(脏词) 如何忽略无意义的字符?达到更好的过滤效果

v0.10.0-脏词分类标签初步支持

v0.11.0-敏感词新特性:忽略无意义的字符,词标签字典

v0.12.0-敏感词/脏词词标签能力进一步增强

v0.13.0-敏感词特性版本发布 支持英文单词全词匹配

v0.16.1-敏感词新特性之字典内存资源释放

v0.19.0-敏感词新特性之敏感词单个编辑,不必重复初始化

v0.20.0 敏感词新特性之数字全部匹配,而不是部分匹配

v0.21.0 敏感词新特性之白名单支持单个编辑,修正白名单包含黑名单时的问题

view

版本特性

  • 优化白名单的匹配策略,避免长白名单时,匹配到短的黑名单,不符合预期

https://github.com/houbb/sensitive-word/issues/76

https://github.com/houbb/sensitive-word/issues/19

  • 白名单支持单个编辑

针对单个白名单词的新增/删除,无需全量初始化

使用场景:在初始化之后,我们希望针对单个词的新增/删除,而不是完全重新初始化。这个特性就是为此准备的。

支持版本:v0.21.0

方法说明

addWordAllow(word) 新增白名单,支持单个词/集合

removeWordAllow(word) 删除白名单,支持单个词/集合

使用例子

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
final String text = "测试一下新增敏感词白名单,验证一下删除和新增对不对"; SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance() .wordAllow(WordAllows.empty()) .wordDeny(new IWordDeny() { @Override public List<String> deny() { return Arrays.asList("测试", "新增"); } }) .init(); // 当前 Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString()); // 新增单个 sensitiveWordBs.addWordAllow("测试"); sensitiveWordBs.addWordAllow("新增"); Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString()); // 删除单个 sensitiveWordBs.removeWordAllow("测试"); Assert.assertEquals("[测试]", sensitiveWordBs.findAll(text).toString()); sensitiveWordBs.removeWordAllow("新增"); Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString()); // 新增集合 sensitiveWordBs.addWordAllow(Arrays.asList("新增", "测试")); Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString()); // 删除集合 sensitiveWordBs.removeWordAllow(Arrays.asList("新增", "测试")); Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString()); // 新增数组 sensitiveWordBs.addWordAllow("新增", "测试"); Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString()); // 删除集合 sensitiveWordBs.removeWordAllow("新增", "测试"); Assert.assertEquals("[测试, 新增, 新增]", sensitiveWordBs.findAll(text).toString());

小结

和黑名单的单个编辑类似,可以避免重复初始化的问题。提升用户使用体验。

开源代码

敏感词 https://github.com/houbb/sensitive-word

敏感词 https://github.com/houbb/sensitive-word-admin