copyright
不管您是个人还是公司都可以随意使用
DzFilter
,并且随意修改源代码。感谢大家的使用!
温馨提示
用于生产环境时请替换项目的数据库连接代码,使用数据连接池的方式操作数据库!非常抱歉,本项目暂不维护!
公告
- 目前1.0.7已经完善,暂时不支持sqlite强一致性,不能100%保证一致。
- 修复了集群情况下,重复通知的BUG。
- 1.0.9 版本移除关键词检索功能,如需使用请自行维护。
- 1.1.0 优化敏感词加载性能。
使用指南
- Spring配置指南
- SpringMvcDemo
- SpringBoot举一反三即可.
DzFilter
目前最新版:1.1.0[更新日志]
使用DFA算法实现的敏感词过滤。主要用于实现数据文本的内容安全,反垃圾,智能鉴黄,敏感词过滤,不良信息检测,携带文本的关键词获取。
- 过滤SQL脚本
- 过滤中文字符
- 过滤英文字符
- 过滤script标签
- 过滤html标签
- 过滤数字
- 过滤字母
- 过滤汉字
- 自定义过滤,可由后台自动删除添加。提供完善的API。
如何使用
导入以下仓库
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
添加Dependency
<dependency>
<groupId>com.github.fanhua1994</groupId>
<artifactId>DzFilter</artifactId>
<version>1.1.0</version>
</dependency>
功能详解
过滤敏感词
String filter(String content)
判断是否包含敏感词
boolean existFilter(String content)
配置数据库
如果您需要使用在分布式的系统或同时在多个程序中使用
DzFilter
并且需要保持一致性,那么我们建议您使用mysql数据库,如果是单击应用我们建议您使用sqlite数据库。数据库文件在项目目录下的database下。放到对应目录 配置好就行了。如果想使用mysql的话,请自行导入mysql驱动,并将database目录下的java_filter.sql导入mysql然后在dzfilter_config.properties配置 用户名密码等信息即可。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
Mysql配置文件如下
dzfilter.db.driver=com.mysql.jdbc.Driver
dzfilter.db.dburl=jdbc:mysql://120.77.245.xxx:3306/filter_word?useUnicode\=true&characterEncoding\=utf-8&autoReconnect\=true
dzfilter.db.is_mysql=true
#如何您是使用mysql请配置以下信息
dzfilter.db.dbuser=root
dzfilter.db.dbpass=*****
# 如果不是集群 请忽略以下配置
dzfilter.cluster.open=true
dzfilter.cluster.activemq=tcp://192.168.0.106:61616
dzfilter.cluster.server_id=192.168.0.105
dzfilter.cluster.channel_name=dzfilter
dzfilter.cluster.username=admin
dzfilter.cluster.password=admin
SQLite配置如下
dzfilter.db.driver=org.sqlite.JDBC
dzfilter.db.dburl=jdbc:sqlite:/home/fanhua/database/data_filter20171211.db
dzfilter.db.is_mysql=false
#不是Mysql不用填写
dzfilter.db.dbuser=root
dzfilter.db.dbpass=***
# 目前在SQLite数据库集群暂时没法保证一致性
dzfilter.cluster.open=false
dzfilter.cluster.activemq=tcp://192.168.0.106:61616
dzfilter.cluster.server_id=192.168.0.105
dzfilter.cluster.channel_name=dzfilter
dzfilter.cluster.username=admin
dzfilter.cluster.password=admin
集群配置
如果您想要在多个项目中使用DzFilter请先安装activemq消息队列,在配置文件中进行配置,每个项目最好不要放到一台服务区,dzfilter.cluster.server_id
参数对数据至关重要,请保证全局唯一。dzfilter.cluster.open
请保证为true开启状态,
多个项目之间需要保证dzfilter.cluster.channel_name
参数一致。
您只需要在多个项目中同时使用Activemq消费者监听com.hengyi.dzfilter.listener.SyncMessageListener
即可。
部分核心API
添加自定义关键词过滤
Boolean res = TextUtils.addFilter(String keywords);
删除自定义关键词过滤
boolean res = TextUtils.delFilter(String keywords);
分页获取添加的关键词
List<Map<String,Object>> rows = TextUtils.getDataPage(int page,int num);//第一个参数页数 1开始 第二个参数每页条数
List<Map<String,Object>> rows = TextUtils.getDataOffset(int offset,int limit);第一个参数偏移量 0开始 第二个参数每页条数
自定义关键词总数
int total = TextUtils.getDataTotal();
刷新敏感词
TextUtils.sync(boolean sync);
sync
参数是否同步刷新整个集群。仅mysql数据库生效.
Copyright 2018 fanhua1994
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.