WordShield 一款轻量级且灵活的敏感词过滤库

简介

WordShield 是一款轻量级且灵活的敏感词过滤库,基于 Spring Boot 构建。它提供了简单易用的 API,用于过滤和管理敏感词汇。

github 地址:

https://github.com/avidbyte/wordshield

特性

敏感词过滤:自动过滤字符串中的敏感词汇。

默认敏感词列表:内置预设的敏感词列表。

可定制敏感词列表:支持从指定路径加载自定义敏感词列表。

动态管理:允许动态添加或移除敏感词。

Spring Boot 集成:自动在应用上下文中注册 SensitiveWordFilter Bean。

快速开始

准备工作

Java 8 或更高版本

Spring Boot 2.x 或更高版本

Maven 或 Gradle

添加依赖

Maven

在 pom.xml 文件中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>io.github.avidbyte</groupId>
    <artifactId>wordshield</artifactId>
    <version>1.0.0</version>
</dependency>

Gradle

在 build.gradle 文件中添加以下依赖:

groovy 复制代码
dependencies {
    implementation 'io.github.avidbyte:wordshield:1.0.0'
}

使用方法

初始化过滤器

添加依赖后,SensitiveWordFilter Bean 会被自动注册。您可以在服务类中直接使用它:

java 复制代码
import io.github.avidbyte.wordshield.SensitiveWordFilter;

@Slf4j
@Service
public class ContentService {

    private final SensitiveWordFilter sensitiveWordFilter;

    public ContentService(SensitiveWordFilter sensitiveWordFilter) {
        this.sensitiveWordFilter = sensitiveWordFilter;
    }

    public String filterContent(String content) {
        SensitiveWordResult sensitiveWordResult = sensitiveWordFilter.checkAndFilter(content, "*");
        log.info("文本: {} 是否是敏感词: {}", content, sensitiveWordResult.isContainsSensitiveWord());
        log.info("文本: {} 敏感词处理结果: {}", content, sensitiveWordResult.getFilteredText());
    }
}

自定义敏感词列表

默认情况下,库会加载预设的敏感词列表。不过,您也可以通过提供文件路径来自定义敏感词列表:

在 application.yml 配置

yaml 复制代码
sensitive:
  word:
    loadDefault: false
    source: file
    filePath: /opt/sensitive_word.txt

loadDefault 为 true, wordshield 会先加载预设的敏感词列表, 如果不希望使用预设的敏感词列表, 就将 loadDefault 设置为 false

其他数据来源: database, api, etc. 可以通过这种方式加载

yaml 复制代码
sensitive:
  word:
    loadDefault: false
    source: database

当前配置 wordshield 不会加载预设的敏感词, 敏感词库完全是空的, 需要使用者自己调用新增敏感词的方法构造敏感词库

通过这四个方法也可以动态地管理敏感词列表

java 复制代码
import io.github.avidbyte.wordshield.SensitiveWordFilter;

@Service
public class ContentService {

    private final SensitiveWordFilter sensitiveWordFilter;

    public ContentService(SensitiveWordFilter sensitiveWordFilter) {
        this.sensitiveWordFilter = sensitiveWordFilter;
    }

    public String addSensitiveWords(List<String> words) {
        sensitiveWordFilter.addSensitiveWords(words);
    }

    public String addSensitiveWord(String word) {
        sensitiveWordFilter.addSensitiveWord(word);
    }

    public String removeSensitiveWords(List<String> words) {
        sensitiveWordFilter.removeSensitiveWords(words);
    }

    public String removeSensitiveWord(String word) {
        sensitiveWordFilter.removeSensitiveWord(word);
    }
    
}
相关推荐
熊小猿3 分钟前
如何在 Spring Boot 项目中使用 @Slf4j 注解结合 Logback 进行系统日志管理
java·开发语言·spring boot
豐儀麟阁贵40 分钟前
5.4静态变量和静态方法
java·开发语言
ytgytg281 小时前
芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
java·vue
乾坤瞬间1 小时前
【Java后端进行ai coding实践系列】如何使用ai coding实现计划任务增删改查
java·人工智能·python
昔我往昔1 小时前
@ApiModel注解升级成@Schema注解
java
superlls2 小时前
(场景题)Java 导出 Excel 的两种方式
java·开发语言·后端·excel
harmful_sheep2 小时前
springMvc
java
一只小透明啊啊啊啊2 小时前
Java电商项目中的概念: 高并发、分布式、高可用、微服务、海量数据处理
java·分布式·微服务
2401_841495645 小时前
【数据结构】基于Prim算法的最小生成树
java·数据结构·c++·python·算法·最小生成树·prim
木井巳6 小时前
[Java数据结构和算法] HashMap 和 HashSet
java·数据结构·1024程序员节