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;
}
请问这样计算哈希值的目的是什么呢?