验证敏感词

这里面须要用到Pattern和matcher两个类中提供的方法,代码以下:java

public boolean containsSensitiveWords(String content) {
        logger.info("The method containsSensitiveWords check start:");
        logger.info("The content:" + content);
        boolean result = false;
        // 取得全部敏感词
        //String sensitiveWords = redisClient.get(RedisConstants.ZR_SENSITIVE_WORDS);
        String sensitiveWords=null;
        if(StringUtils.isEmpty(sensitiveWords)){
            // 若是未取到,从数据库读取
            sensitiveWords = getAllSensitiveWordsFromDB();
        }
        //logger.info("The all:" + sensitiveWords);
        // 若是取到了设置的敏感词,执行校验
        if(!StringUtil.isNullOrBlank(sensitiveWords)){
            Pattern pattern = Pattern.compile(sensitiveWords);
            Matcher matcher = pattern.matcher(content);
            if (matcher.find()) {
                result = true;
            }
        }
        logger.info("The result:" + result);
        return result;
    }

从数据库中获取全部的敏感词(敏感词本身定义),以下:redis

/**
     * 功能描述: 从数据库中取得全部的敏感词,组织表达式返回
     */
    private String getAllSensitiveWordsFromDB(){
        StringBuffer buf = new StringBuffer();
        // 查询数据库,取得所有敏感词集合
        List<SensitiveWord> wordList = 
            wordDao.queryForList("productReview.getAllSensitiveWords",
                null, SensitiveWord.class);
        if(!wordList.isEmpty()){
            for(int i=0; i<wordList.size(); i++){
                buf.append(wordList.get(i).getWord());
                if(i != wordList.size()-1){
                    buf.append("|");
                }
            }
        }
        return buf.toString();
    }

从数据库中取敏感词的sql语句:sql

<!-- 获取全部敏感词 -->
	<sql id="getAllSensitiveWords">
	<![CDATA[
		SELECT WORD FROM SENSITIVE_WORD
		WITH UR
	]]>
	</sql>
相关文章
相关标签/搜索