Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avidbyte/wordshield
敏感词过滤:自动过滤字符串中的敏感词汇。 默认敏感词列表:内置预设的敏感词列表。 可定制敏感词列表:支持从指定路径加载自定义敏感词列表。 动态管理:允许动态添加或移除敏感词。 Spring Boot 集成:自动在应用上下文中注册 SensitiveWordFilter Bean。
https://github.com/avidbyte/wordshield
Last synced: 21 days ago
JSON representation
敏感词过滤:自动过滤字符串中的敏感词汇。 默认敏感词列表:内置预设的敏感词列表。 可定制敏感词列表:支持从指定路径加载自定义敏感词列表。 动态管理:允许动态添加或移除敏感词。 Spring Boot 集成:自动在应用上下文中注册 SensitiveWordFilter Bean。
- Host: GitHub
- URL: https://github.com/avidbyte/wordshield
- Owner: avidbyte
- Created: 2024-08-22T06:59:00.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-09-11T10:39:16.000Z (4 months ago)
- Last Synced: 2024-11-08T10:47:44.915Z (2 months ago)
- Language: Java
- Homepage:
- Size: 326 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![License](https://img.shields.io/badge/license-Apache--2.0-4D7A97)](https://github.com/avidbyte/wordshield/blob/main/LICENSE)
[![Maven Central](https://img.shields.io/badge/maven--central-1.0.0-blue)](https://mvnrepository.com/artifact/io.github.avidbyte/wordshield/1.0.0)
[![Maven Central](https://img.shields.io/badge/PRs--welcome-red)](https://github.com/avidbyte/wordshield/pulls)# 简介
WordShield 是一款轻量级且灵活的敏感词过滤库,基于 Spring Boot 构建。它提供了简单易用的 API,用于过滤和管理敏感词汇。开源之路不易,如果你觉得本项目对你有所帮助,请慷慨地点一个 Star,你的支持将是我持续前进的动力!
# 特性
敏感词过滤:自动过滤字符串中的敏感词汇。
默认敏感词列表:内置预设的敏感词列表。
可定制敏感词列表:支持从指定路径加载自定义敏感词列表。
动态管理:允许动态添加或移除敏感词。
Spring Boot 集成:自动在应用上下文中注册 SensitiveWordFilter Bean。本项目敏感词部分来源 https://github.com/konsheng/Sensitive-lexicon 由于不支持通配符,处理了一些以*结尾的敏感词
# 快速开始
## 准备工作
Java 8 或更高版本
Spring Boot 2.x 或更高版本
Maven 或 Gradle
## 添加依赖
Maven
在 pom.xml 文件中添加以下依赖:```xml
io.github.avidbyte
wordshield
1.0.0```
Gradle
在 build.gradle 文件中添加以下依赖:
```groovy
dependencies {
implementation 'io.github.avidbyte:wordshield:1.0.0'
}
```## 使用方法
初始化过滤器
添加依赖后,SensitiveWordFilter Bean 会被自动注册。您可以在服务类中直接使用它:```java
import io.github.avidbyte.wordshield.SensitiveWordFilter;@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 words) {
sensitiveWordFilter.addSensitiveWords(words);
}public String addSensitiveWord(String word) {
sensitiveWordFilter.addSensitiveWord(word);
}public String removeSensitiveWords(List words) {
sensitiveWordFilter.removeSensitiveWords(words);
}public String removeSensitiveWord(String word) {
sensitiveWordFilter.removeSensitiveWord(word);
}
}```