本文最后更新于 2026年6月19日 下午
升级 SensitiveUtilServiceImpl
前言
书再接上回
完成升级 EmailServiceImpl 的工作后
对敏感词的检测还有一小部分工作要完成
启动时对敏感词库进行载入预热
就是还要对用户注册时的用户名,评论和更改用户信息时的昵称进行检测
这些都是会展示在网页里的 所以要进行检测才能展示
代码实现
由于先前在 SensitiveUtilServiceImpl 里写的检测方法博主不参与检测 输入参数多了个邮箱
所以要再写一个相似的方法来对单纯的内容进行检测
这次不管博主还是谁都要进行检测了
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
@PostConstruct public void warmUpOpenSourceSensitiveWords() { try { List<String> warmUpSamples = java.util.Arrays.asList("预热敏感词检测", "普通文本测试"); for (String sample : warmUpSamples) { SensitiveWordHelper.contains(sample); } log.info("开源词库预热完成"); } catch (Exception e) { log.warn("开源词库预热失败,但不影响应用启动", e); } }
@Override public Boolean checkSensitiveWordsSimple(String content) { if (StringUtils.isEmpty(content)) { return false; }
if (SensitiveUtil.containsSensitiveWords(content)) { java.util.Map<String, String> localSensitiveWordsWithSource = SensitiveUtil.findSensitiveWordsWithSource(content); log.info("本地词库检测为敏感词(用户名/昵称),检测到的敏感词及来源: {}", localSensitiveWordsWithSource); return true; } log.info("本地词库检测无敏感词(用户名/昵称) >>>>> 进入开源词库检测"); if (SensitiveWordHelper.contains(content)) { java.util.List<String> openSourceSensitiveWords = SensitiveWordHelper.findAll(content); log.info("开源词库检测为敏感词(用户名/昵称),检测到的敏感词: {}", openSourceSensitiveWords); return true; } log.info("开源词库检测无敏感词(用户名/昵称) >>>>> 进入多ai并行检测"); DetectionStatusEnum aiStatus = aiChatService.aiCheckWord(content); if (aiStatus.shouldBlock()) { log.info("多AI并行检测为敏感词(用户名/昵称),内容: {}", content); return true; } log.info("多AI并行检测无敏感词(用户名/昵称) >>>>> 检测通过"); return false; }
|
SensitiveUtilService 添加接口方法
1 2 3 4 5 6
|
Boolean checkSensitiveWordsSimple(String content);
|
在更新用户信息中的检测
在注册中的检测
在评论中的检测
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2026 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/