信息检索中的vbyte解码器

时间:2018-10-05 14:52:55

标签: python arrays byte pickle information-retrieval

因此,我尝试压缩倒排索引,并且使用了v字节编码算法来压缩文档和职位列表,然后执行

pickle.dump(v)

转换为二进制文件。然后我尝试通过

加载文件
pickle.loads(f)

然后我尝试通过解码算法对其进行解码

//Encoding algorithm
def vbyte():
for k, v in term_position_dic.items():
    b = []
    for i in v:
        while i >= 128:
            b.append(i & 0x7f)
            i >>= 7
        b.append(i | 0x80)
    term_position_dic[k] = b

然后我尝试通过

进行解码
loading the file
p = f.read(CompressedLookup['scene']['size'])

//decoding code
def vbytedecode(inp):
for i in range(len(inp)):
    pos = 0
    result = inp[i] & 0x7f
    print(result)
    while (inp[i] & 0x80) == 0:
        i += 1
        pos += 1
        b = inp[i] & 0x7f
    result |= (b << (7*pos))
return(result)

运行此命令时,我得到的字节数组索引超出错误ERROR的范围。为什么会发生这种情况?

先谢谢您。

0 个答案:

没有答案