返回信息流搜索引擎中 倒排索引下表:
左侧的索引表如何建立?
可能有人不假思索回答:左侧的索引当然要采取hash结构啊,这样可以快速的定位到字典项。但是这样问题又来了,hash函数如何选取呢?而且hash是有碰撞的,但是倒排表似乎又是不允许碰撞的存在的。事实上,虽然倒排表和hash异常的相思,但是两者还是有很大区别的,其实在这里我们可以采用前面提到的Bitmap的思想,每个Term(单词)对应一个位置(当然了,这里不是一个比特位),而且是一一对应的。如何能够做到呢,一般在文字处理中,有很多的编码,汉字中的GBK编码基本上就可以包含所有用到的汉字,每个汉字的GBK编码是确定的,因此一个Term的”ID”也就确定了,从而可以做到快速定位。注:得到一个汉字的GBK号是非常快的过程,可以理解为O(1)的时间复杂度。
我想问问 比如中国的ID是多少? 四个字节? 那对应的ID号32位?内存可以放下。 那假如是中国共产党那ID40位了,放不下了吧
是我错误理解了 还是?
这是一条镜像帖。来源:北邮人论坛 / search-engine / #10789同步于 2011/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SearchEngine机器人发帖
倒排索引 ID问题?
oscar
2011/10/29镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 zzcc 的大作中提到: 】
: 没看明白
: --
中国 这一列就是要索引的。这一列那怎么存储呢?如果用hashmap那肯定会出现hash值一样的结果。
所以不用。用中国的编码值作为数组的下标,是可以的,因为任何词编码值都不一样。但是数组大小是有限制的啊,编码值是无限的,如果词的长度足够长,不如中华人民共和国。
还是不明白,那些D1:1是什么啊
hash确实有可能碰撞,但是概率太低了
如果用编码的话,单字的编码空间是有限的,在多字的时候在每个字下面再存一个map不就好了
-国
中-|
-华
【 在 oscar 的大作中提到: 】
: 中国 这一列就是要索引的。这一列那怎么存储呢?如果用hashmap那肯定会出现hash值一样的结果。
: 所以不用。用中国的编码值作为数组的下标,是可以的,因为任何词编码值都不一样。但是数组大小是有限制的啊,编码值是无限的,如果词的长度足够长,不如中华人民共和国。
你的QQ多少?请教一下。。。
【 在 oscar 的大作中提到: 】
: 搜索引擎中 倒排索引下表:
: 左侧的索引表如何建立?
: 可能有人不假思索回答:左侧的索引当然要采取hash结构啊,这样可以快速的定位到字典项。但是这样问题又来了,hash函数如何选取呢?而且hash是有碰撞的,但是倒排表似乎又是不允许碰撞的存在的。事实上,虽然倒排表和hash异常的相思,但是两者还是有很大区别的,其实在这里我们可以采用前面提到的Bitmap的思想,每个Term(单词)对应一个位置(当然了,这里不是一个比特位),而且是一一对应的。如何能够做到呢,一般在文字处理中,有很多的编码,汉字中的GBK编码基本上就可以包含所有用到的汉字,每个汉字的GBK编码是确定的,因此一个Term的”ID”也就确定了,从而可以做到快速定位。注:得到一个汉字的GBK号是非常快的过程,可以理解为O(1)的时间复杂度。
: ...................