[P2-php-dev 40] Re: tGrep

Back to archive index

aki akid****@s17*****
2005年 5月 21日 (土) 22:59:53 JST


rskさん、ありがとうございますー!

なるほどなぁ、fseek()で高速化の工夫もしてたんですね。

こういうプリミティブな仕組みは、
手品の種が簡単なほどおもしろいとのと
同じような感じでおもしろいです。

--
aki

----------------------- Original Message -----------------------
From:    rsk <moons****@s32*****>
To:      p2-ph****@lists*****
Date:    Wed, 18 May 2005 23:44:37 +0900
Subject: [P2-php-dev 39] tGrep

> 例のスレタイ検索ですが、チューニングして高速化したとともに
> ファイル3つになりました。
> デザインもGoogleの劣化コピーみたいになってますw
> 
> 構成は
> 1. スレッド情報(各行はarray($bbs,$key,$title)をシリアライズ)
> 2. grep対象(各行は(1)における該当行のオフセット+TAB+検索用に変換したスレタイ)
> 3. BBS-板名-ホスト をマッピングしたPHPコード(includeして使う)
> で、これまでは(3)の内容も(1)の各行に含まれてたのでサイズが大きくなってました。
> 別にしたことでファイルI/Oの負荷がかなり軽減できた模様。
> 
> とにかくレンタルサーバでサービスを提供するために作ってます。
> 高度な検索には向かない仕様かも。
> 
> 最初(2)にはスレタイだけが記録されてて、
> 検索時はgrep --line-numberして行番号を抽出、行番号以外を削除してから
> (1)をfgets()でヒットした最後の行になるまで空読み&読み込み
> を繰り返してたんだけど、これじゃー公開には厳しいということで
> ファイル先頭からのオフセット(バイト数)直書き + fseek()を使ってみたら
> 十分なパフォーマンスが出たのでこれはいけるぞ、と。
> 
> 肝は(2)でオフセットがgrepにひっかからないようにエンコードしたところ。
> # decbin()したのをさらに 0 => X, 1 => Y 変換
> # grepに渡すキーワードの英字は半角小文字にしてあるからXYにはひっかからない
> ## そこまでやらんでも [0-9] を [A-J] に変換したらええやん、って今思った
> 
> あとは検索結果のキャッシュですが
> 「キーワードごとに対応するオフセット・グループ」と
> 「オフセット・グループごとに対応するスレッド・グループ」を
> 別々にキャッシュして異なるキーワードで同じスレッド・グループが
> ヒットするときの読み込み負荷を軽くしようとも目論んでます。
> HTML出力をキャッシュするのもありかな?
> 
> akiさんには別途DMでソースのURLを送りますね。(未完成ですが)
> 
> // +------------------------------+
> // | rsk <moons****@s32*****> |
> // +------------------------------+
> 
> _______________________________________________
> P2-php-dev mailing list
> P2-ph****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/p2-php-dev






P2-php-dev メーリングリストの案内
Back to archive index