26. Active Index - (3) Posting Listのメモリはまとめて
pool 3
pool 2
pool 1
pool 0
l 4種類のpool
l 1poolあたり215 posting(必要に応じて拡張)、複数のsliceからなる
l sliceのサイズが異なる(21, 24, 27, 211)
l sliceを繋げて長いPosting Listを実現
l sliceのサイズが小さい方から、slice単位で順に割り当てて行く
l sliceの最初の要素は、前のsliceの末尾へのポインタ(32bit)
l 文書集合中の単語の分布はジップの法則でモデル化している
l 長いPosting Listが少数、短いPosting Listが多数
l 工夫しないとメモリ効率が悪く速度が遅くなってしまう
26
l この実装では、Posting Listの拡張時にメモリコピーが発生しない
27. Active Index - (3) Posting Listのメモリはまとめて
※ビットレイアウトは違うかも
11bit 19bit 2bit
pool 3 offset in slice slice index 11
7bit 23bit 2bit
pool 2 offset in slice slice index 10
4bit 26bit 2bit
pool 1 offset slice index 01
1bit 29bit 2bit
pool 0 o slice index 00
pool index
l sliceのポインタ
27
l 32bitでpostingと同じサイズ