インデックスファイル
sennaでは転置インデックスファイルを作成して高速な検索を実現しています。
構成
sennaでは1インデックスインスタンスに対して、4つのファイルを作成します。 sen_create_indexで指定したインデックスファイル名を'hoge'とすると、以下のようなファイルが作成されます。
hoge.SEN hoge.SEN.i hoge.SEN.i.c hoge.SEN.l
- hoge.SEN
- 外部文書ID(文字列や数値等)と、sennaの内部文書IDとの変換を行うシンボル表です。
- hoge.SEN.i
- 転置ファイルのバッファ領域です。インデックス初期化時に固定サイズが予め確保されます。(デフォルトでは130MB程度確保します。)
- hoge.SEN.i.c
- 転置ファイル(単語IDから文書IDと出現位置のリストを参照するファイル)の実体です。
- hoge.SEN.l
- 文書内に現れる単語(文字要素)の文字列とIDとの変換を行うシンボル表です。
インデックスのサイズ
hoge.SEN.iファイルはインデックス作成時に固定サイズを確保しますが、 その後文書を大量に登録するとインデックスファイルの総サイズは、 単語インデックスなら文書の賞味サイズの1.3倍程度、 n-gramインデックスなら文書の賞味サイズの2.5倍程度になります。
.sen.iファイルの初期サイズ
デフォルトでは130MBを確保しますが、設定ファイル(/var/senna/senna.conf)に、
INITIAL_N_SEGMENTS 数値
のように数値を指定すると、
数値 * 256KB
のサイズが確保されるようになります。
ただし、INITIAL_N_SEGMENTSの値を小さく設定するほど、更新処理の速度が低下しますので、 デフォルト値よりも極端に小さい値を設定しない方が無難です。(デフォルト値は512です)