实现一个违规词匹配的功能。
像一些名称检测,弹幕检测,都会有这么一个匹配,输入的内容与违规词库进行匹配,只要匹配出来一个就不允许通过,那具体怎么实现呢。
首先是违规词库的录入,一般开发过程违规词库肯定是要放到数据库的,这里为了方便,就放到本地的资源文件中。
然后就是项目启动自动录入
@Configuration
public class SensitiveWordsConfig {
@Value("${spring.sensitive}")
String sensitive;
@Bean
public void sensitiveWordsUtils(){
Set<String> sensitiveMap = new HashSet<>();
String[] sensitiveArr = sensitive.split("/");
for(String s : sensitiveArr){
sensitiveMap.add(s);
}
SensitiveWordsUtils.initKeyWord(sensitiveMap);
System.out.println(SensitiveWordsUtils.sensitiveWordsMap);
}
}
最后就是录入方法initKeyWord,我们默认把英文全部转为小写
public class SensitiveWordsUtils {
public static HashMap sensitiveWordsMap = new HashMap();
public static int minMatchTYpe = 1;
public static Map initKeyWord(Set<String> keySets) {
try {
addSensitiveWordToHashMap(keySets);
} catch (Exception e) {
e.printStackTrace();
}
return sensitiveWordsMap;
}
public static void addSensitiveWordToHashMap(Set<String> keyWordSet) {