算法 rmmseg-cpp dictionary 中取哈希值相关算法疑问

fbsender · 2014年10月09日 · 最后由 fbsender 回复于 2014年10月09日 · 7042 次阅读

gem rmmseg-cpp 使用 c++ 扩展的中文分词 gem

分词前,需加载分词所用的词库,为了提升搜索性能,为词库中的每个词依据每个字符与词语长度计算出不同的哈希值,算法如下:

static unsigned int hash(const char *str, int len)
{
    unsigned int key = 0;
    while (len--)
    {
        key += *str++;
        key += (key << 10);
        key ^= (key >> 6);
    }
    key += (key << 3);
    key ^= (key >> 11);
    key += (key << 15);
    return key;
}

请问这样计算哈希值的目的是什么呢?

发帖总是没人理我,不开心...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号