namazu-ml(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

pack 'w'



古川です。

近々、データベースの pack 'w' 化が予定されていますが、フォーマットの変
更点を、次のように予想しているのですが、こんな感じでよいでしょうか?


>> doc/ja/nmz_files.txt より
  > * NMZ.i
  >     [単語1\n]
  >     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n
  >     [単語2\n]
  >     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n
  >     [単語3\n]
  >     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n
  >     ...

「エントリの総数 * 2」「文書ID」「スコア」が pack 'w' される。


  > * NMZ.ii
  >     [NMZ.i中の単語1の位置][NMZ.i中の単語2の位置]
  >     [NMZ.i中の単語3の位置]....

「位置」が pack 'w' される


  > * NMZ.h
  >     [NMZ.ii中の\x0000の位置][NMZ.ii中の\x0001の位置] ...
  >     [NMZ.ii中の\xffffの位置][番兵]

NMZ.ii が pack 'w' されるのに伴い、offset / sizeof(int) だったものが
offset になる。

NMZ.h 内の値自体は、pack 'w' されない


  > * NMZ.fi
  >     [NMZ.f中の文書ID1の位置][NMZ.f中の文書ID2の位置]
  >     [NMZ.f中の文書ID3の位置]....

変更なし


  > * NMZ.p
  >     [ハッシュ値\x0000を含む文書ID][ハッシュ値\x0000を含む文書ID]...
  >     [ハッシュ値\x0001を含む文書ID][ハッシュ値\x0001を含む文書ID]...
  >     ...
  >     [ハッシュ値\xffffを含む文書ID][ハッシュ値\xffffを含む文書ID]

これは、正しくは

    [ハッシュ値\x0000を含む文書数][ハッシュ値\x0000を含む文書ID]...
    [ハッシュ値\x0001を含む文書数][ハッシュ値\x0001を含む文書ID]...
    ...
    [ハッシュ値\xffffを含む文書数][ハッシュ値\xffffを含む文書ID]

ですよね?で、変更点は、

「文書数」「文書 ID」が、pack 'w' される


  > * NMZ.pi
  >     [NMZ.p中の\x0000の位置][NMZ.p中の\x0001の位置] ...
  >     [NMZ.p中の\xffffの位置]

変更なし


  > * NMZ.t
  >     [文書ID1のタイムスタンプ][文書ID2のタイムスタンプ]...

変更なし


  > * NMZ.le
  >   - little-endian なインデックスのときに存在
  > * NMZ.be
  >   - big-endian なインデックスのときに存在

これはもうやめましょう。やめるチャンスですし。どちらかに固定でいいです
よね。

-- 

                                        ヤマハ(株)ピアノプレーヤ設計課
                                                              古川 令
                                             furukawa@xxxxxxxxxxxxxxxx