namazu-dev(ring)


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

compressing an index with zlib



インデックスを zlib を使って圧縮する案について。

EBライブラリ <http://www.sra.co.jp/people/m-kasahr/eb/> の 
ebzip のソースコードを眺めていたら、nmzzip を割と簡単に作れ
る気がしてきました (ebzip のコードの大半が再利用できそう)。

こんな使い方を考えています。

nmzzip

  * 既存のインデックスを圧縮する
    % nmzzip ~/NMZ/foobar

nmzunzip

  * 圧縮されたインデックスを展開する
    % nmzunzip ~/NMZ/foobar
    
mknmz

  * インデックス時に圧縮オプションを指定
    - 普通にインデックスを作成して、最後に nmzzipを使って圧縮する
      % mknmz --compress ~/Mail/ml/foobar 

  * 圧縮されたインデックスを更新
    - 圧縮されたインデックスは最初に nmzunzip で展開する
    - 更新処理を施した後で、再び nmzzip で 圧縮する

namazu

  * 圧縮されたインデックスを zlib の関数を用いて検索をする
    - ファイル全体を展開するのではなく、アクセス時に 2-16 KB
      程度のブロック単位で必要な部分だけ展開するので、実用的な
      速度が達成できるはずです。(EBライブラリで実証されている)


2.0 の目玉機能 (?) として実装しようかしら? たぶん、集中して
作業すれば 3,4日で実装できると思います (対応が予想以上に面倒
なら先送りします)。どのくらい需要があるのかな。

# 当面は細かい作業に専念するので zlib 対応に取り掛かるのは、
# しばらく後になります。(あるいは野首さんが対応します? :-)

-- Satoru Takabayashi
The sooner you start to code, the longer the program will take. 
                                                -- Roy Carlson