yukio ishi
ishi.****@gmail*****
2007年 8月 14日 (火) 12:02:45 JST
こんにちは、石野です。 ありがとうございます。非常に参考になります。 ちなみに、試したのは約15万レコードに対しての検索で発生した現象でした。 ORで多くの単語を一度に検索したほうが検索速度をさらに高速にできたので、 そうしたかったのですが、今後レコード数がかなり多くなることも想定しているので、 とりあえず、一単語づつ検索しようかと思います。 SENNA_MAX_N_EXPRの変更も必要になったら試してみたいと思います。 本当にありがとうございました。 07/08/13 に morit****@razil***** <morit****@razil*****> さんは書きました: > > こんにちは、森です。 > > Sennaではヒットしたレコードの情報を内部のハッシュテーブルに一旦全て登録します。 > その時に消費するメモリは、32bit環境なら検索結果1件につきおよそ48byte程度になると > 思います。100万件がヒットすると48MByte消費するぐらいの計算です。 > > そのほかに、検索語に対応する転置インデックスの領域を一時的にメモリにマッピングします。 > この量はインデックスに登録されている文書件数や指定した検索語の数に応じて増加します。 > > 今回のケースでは、ft_init_boolean_searchの中で > "too long query"という警告が出ているので、 > こちらがネックになっているようです。 > > tritonnの、myisam/ft_boolean_search.cの25行目で > > #define SENNA_MAX_N_EXPR 32 > > と定義されていますので、この数をもっと大きくすれば、 > 現在よりも多くの単語で検索することができる可能性があります。 > >