生成特征词的的hash值

来源:互联网 发布:python 爬取金融数据 编辑:程序博客网 时间:2024/06/08 19:35
/** * 生成特征词的的hash值 * @return */private BigInteger hash(String keywords) {    if (keywords == null || keywords.length() == 0) {        return new BigInteger("0");    } else {        char[] sourceArray = keywords.toCharArray();        BigInteger x = BigInteger.valueOf(((long) sourceArray[0]) << 7);        BigInteger m = new BigInteger("1000003");        BigInteger mask = new BigInteger("2").pow(this.hashbits).subtract(                new BigInteger("1"));        for (char item : sourceArray) {            BigInteger temp = BigInteger.valueOf((long) item);            x = x.multiply(m).xor(temp).and(mask);        }        x = x.xor(new BigInteger(String.valueOf(keywords.length())));        if (x.equals(new BigInteger("-1"))) {            x = new BigInteger("-2");        }        return x;    }}