namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

easy way to compress NMZ.i and NMZ.p



Modern Information Retrieval
<http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=020139829x>
なる本を読んでいて、NMZ.i と NMZ.p を圧縮する単純な方法を知
りました。 (気づいてみればあきれるほど単純)

ひとことで言えば、NMZ.i, NMZ.p に記録する文書IDのリストは必
ず昇順で並んでいるので、これを差分で記録すればいいというだけ
の話です。つまり、1, 5, 12, 100, 150 なら 1, 4, 7, 88, 50 と
記録するわけです。

差分で記録すれば当然、各値を表すためのビット数が減りますから、
pack 'w' の効果と合わせて、インデックスのサイズは小さくなり
ます。というわけで、のちほど実装してみます。

# pack 'w' (バイト単位で圧縮) より効率のよい数値表現 (ビット
# 単位で圧縮) の方法も載っていましたが、さすがにそこまでする
# 必要はないかな、と。 (perlでビット演算をすると遅いだろうし)

p.s.
<http://nova.planet.sci.kobe-u.ac.jp/~matsuda/essay/hightech.html>
の「6. 早起きの宣教師たる私」はためになります。:)

-- Satoru Takabayashi