驗證敏感詞

這裏面須要用到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>
相關文章
相關標籤/搜索