何小豆儿在此 发表于 2024-9-20 10:54:47

敏感词 v0.21.0 白名单支持单个编辑,修正白名单包含黑名单时的题目

敏感词系列

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 敏感词新特性之白名单支持单个编辑,修正白名单包含黑名单时的题目
https://img2024.cnblogs.com/other/1436333/202409/1436333-20240920114952472-771540686.jpg
版本特性


[*]优化白名单的匹配策略,避免长白名单时,匹配到短的黑名单,不符合预期
https://github.com/houbb/sensitive-word/issues/76
https://github.com/houbb/sensitive-word/issues/19

[*]白名单支持单个编辑
针对单个白名单词的新增/删除,无需全量初始化

利用场景:在初始化之后,我们希望针对单个词的新增/删除,而不是完全重新初始化。这个特性就是为此预备的。
支持版本:v0.21.0
方法说明

addWordAllow(word) 新增白名单,支持单个词/集合
removeWordAllow(word) 删除白名单,支持单个词/集合
利用例子

      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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 敏感词 v0.21.0 白名单支持单个编辑,修正白名单包含黑名单时的题目