代码拉取完成,页面将自动刷新
1.1. 敏感词替换
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.replace(text)); //利于上游行业发展的政策逐渐发布
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.replace(text)); //利于上**业发展的政策逐渐发布
1.2. 是否包含敏感词
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.include(text)); //false
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.include(text)); //true
1.3. 获取敏感词数
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.wordCount(text)); //0
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.wordCount(text)); //1
1.4. 获取敏感词列表
String text = "利于上游1行业发展的政策逐渐发布";
System.out.println(filter.wordList(text)); //[]]
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.wordList(text)); //[游行]
1.5. 增加白名单功能
- blacklist.txt
- whitelist.txt
1.6. 增加方法重载
- replace(final String text) // distance=0&symbol=*
- replace(final String text, final char symbol) // distance=0
- include(final String text) // distance=0
- wordCount(final String text) // distance=0
- wordList(final String text) // distance=0
1.7. 增加在线添加敏感词方法
//此处将5000加入黑名单
context.addWord(Collections.singletonList("5000"), WordType.BLACK);
1.8、增加在线删除敏感词方法
//此处将5000移出黑名单(若黑名单没有该词组将忽略)
context.removeWord(Collections.singletonList("5000"), WordType.BLACK);
//此处将紧急事件移出白名单(若白名单没有该词组将忽略)
context.removeWord(Collections.singletonList("紧急事件"), WordType.WHITE);
WordContext context = new WordContext();
该对象主要用来初始化和管理词库,默认读取类路径下 名为:blacklist.txt 和 whitelist.txt 的文件,也可以传入文件名,如下所示:
WordContext context = new WordContext("/blacklist.txt","/whitelist.txt");
WordFilter filter = new WordFilter(context);
传入上一步创建的词库上下文,获得过滤器对象之后即可使用filter调用相关方法,若需要添加或删除词库的词汇,可以使用WordContext的API实现,如下所示:
//此处将紧急加入黑名单
context.addWord(Collections.singletonList("紧急"), WordType.BLACK);
//此处将紧急移出黑名单(若黑名单没有该词组将忽略)
context.removeWord(Collections.singletonList("紧急"), WordType.BLACK);
//此处将紧急事件移出白名单(若白名单没有该词组将忽略)
context.removeWord(Collections.singletonList("紧急事件"), WordType.WHITE);
程序会跳过不同的距离,查找敏感词,距离越长,过滤越严格,效率越低,开发者可以根据具体需求设置,这里以“紧急”为敏感词举例,以此类推
0 匹配紧急
1 匹配不紧不急,紧x急
2 匹配紧急,紧x急,紧xx急
解决类似24口交换机的问题
拆分为白名单和黑名单
如下所示:
黑名单(紧急)
白名单(紧急事件)
我们决定紧急征调5000人前往宅区帮助灾民 / 紧急被检测
并且决定为紧急事件打开绿灯 / 紧急事件不被检测
package com.startx.http.wordfilter;
import org.junit.Test;
import java.util.Collections;
import java.util.List;
/**
* 单元测试用例
*
* @author minghu.zhang
*/
public class AppTest {
/**
* 词库上下文环境
*/
private final WordContext context = new WordContext();
private final WordFilter filter = new WordFilter(context);
/**
* 测试替换敏感词
*/
@Test
public void replace() {
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.replace(text)); //利于上游行业发展的政策逐渐发布
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.replace(text)); //利于上**业发展的政策逐渐发布
}
/**
* 测试是否包含敏感词
*/
@Test
public void include() {
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.include(text)); //false
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.include(text)); //true
}
/**
* 获取敏感词数
*/
@Test
public void wordCount() {
String text = "利于上游行业发展的政策逐渐发布";
System.out.println(filter.wordCount(text)); //0
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.wordCount(text)); //1
}
/**
* 获取敏感词列表
*/
@Test
public void wordList() {
String text = "利于上游1行业发展的政策逐渐发布";
System.out.println(filter.wordList(text)); //[]]
context.removeWord(Collections.singletonList("上游行业"), WordType.WHITE);
System.out.println(filter.wordList(text)); //[游行]
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。