Article freyasx/59 of [1-110] on the server localhost:119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A44@freyasx.ML_>]
Newsgroups: mail-lists.freyasx

[FreyaSX] FreyaSX-0.99.12 リリース ( 2GB超の索引への対応)
07 Oct 2005 08:43:33 GMT ysato@delegate.org (Yutaka Sato)
The DeleGate Project


FreyaSX-0.99.12 をリリースしました。

・2ギガバイトを越える(実質上上限の無い) .idx ファイルの作成・検索に対応
・4ギガバイトまでの .lex ファイルの作成・検索に対応
・16ギガバイトまでの .ctx ファイルに対応(4ギガ語の元データに対応)
・ハッシュ衝突率が高い時に自動的にハッシュ関数をelfhashからCRC32に切り替え
・fhttpd,any2fdifをDeleGate/9.0.5ベースに
・any2fdif/Win版が1970年以前の日付でコアダンプする問題を回避

ここで扱えるファイルサイズの拡大の件は、プログラムコード中の
signed int,fseek(),ftell() に起因して、扱えるファイル中のオフセットが 2GB
以下に制約されたり、データが壊れていたというもので、今回これらを off_t
や unsigned intに書換えたり、fseek() を fsetpos() で置き換えることで、この
制約を回避しました。

一方、.lex や .ctx のサイズに上限が残っているのは、そのサイズが索引ファイル
中に記録されているデータの幅(32bits)に依るもので、ひとつには一応 0.99 の
中ではデータ互換性を保つために変更していません。また、例えば .lex などは、
単語の検索のために最初の文字で分割した後は単純バカサーチになっているので、
このまま巨大化しても実用的でなくなるからです(1語検索あたり、数十MB以上の
読み出しを必要とする)。

ということで、さらなる大規模化対応のために、FreyaSX-1.0 以降において、
・.lex の中のオフセットを 32bits から(に収まらない時) 40 か 64bits に変更
・あるいは、.lex の実装をbtreeの標準関数で置き換える
・.ctx の中の語の表現を 32bits から 40bits に変更(.lex語彙数3300万超に対応)
・.map の中の各ドキュメントの開始語番号を64bitsに変更する(16GB超.ctxに対応)
・参照頻度が非常に高い語に関する .idx の作成処理の問題の回避(200万回参照
  だと合成前後の配列のために200M*8B*2=3.2GBのメモリが必要となる)
などするかもしれません。
あ、あと日本語的には、補助漢字とかにも対応したいですね。

                   D G  
┌─┐┬┌──┬┐ //\^^ ( - ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V