检测敏感词汇

package cn.com.connext.commenservice.utils;

import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

public class BeanValidator {

private static ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

@SuppressWarnings({ "rawtypes", "unchecked" })
public static <T> Map<String,String> validate(T t,Class... groups){
    Validator validator = validatorFactory.getValidator();
    Set validateResult = validator.validate(t, groups);
    if(validateResult.isEmpty()){
        return Collections.EMPTY_MAP;
    } else {
        LinkedHashMap errors = Maps.newLinkedHashMap();
        Iterator iterator = validateResult.iterator();
        while(iterator.hasNext()){
            ConstraintViolation violation = (ConstraintViolation)iterator.next();
            errors.put(violation.getPropertyPath().toString(), violation.getMessage());
        }
        return errors;
    }
}

public static <T> Map<String,String> validateList(Collection<?> collection){

    Preconditions.checkNotNull(collection);
    Iterator<?> iterator = collection.iterator();
    Map errors;
    do {
        if(!iterator.hasNext()){
            return Collections.EMPTY_MAP;
        }
        Object object = iterator.next();
        errors = validate(object, new Class[0]);
    } while (errors.isEmpty());

    return errors;
}

public static <T> Map<String,String> validateObject(Object first,Object... objects){
    if(objects != null && objects.length > 0){
        return validateList(Lists.asList(first, objects));
    } else {
        return validate(first,new Class[0]);
    }
}

}

/**
 * @param content
 * @return 返回false表示有敏感词
 */
public static boolean checkContent(String content) {
	Set<String> set = BadWordUtil.getBadWord(content, 2);
	log.info("语句中包含敏感词的个数为:" + set.size() + "。包含:" + set);
	if(set.size()>0){
		return false;
	}else{
		return true;
	}
}
@PostMapping("/check")
@ApiOperation(value = "检测敏感词汇", notes = "检测敏感词汇")
public LYResultVO check(@RequestBody Topic params)  {
	
	Map<String, String> map = BeanValidator.validateObject(params);
    if(MapUtils.isNotEmpty(map)){
        String r = "";
        for (Map.Entry<String, String> entry : map.entrySet()) {
            log.info("{}->{}",entry.getKey(), entry.getValue());
            r = r + entry.getValue();
        }
        return LYResultVO.errorResultVO(r);
    }
	
	log.info(JsonUtils.toJSONString(params));
	
	if(!BadWordUtil.checkContent(params.getContent())){
		 return LYResultVO.errorResultVO("发帖失败,内容包含敏感词");
	}
	return LYResultVO.successResultVO("检测通过");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值