ホーム | TeqStock.tokyo について | 技術置き場 | 運営ブログ | お問い合わせ |
ドキュメント番号の採用 | 毎回ドキュメント名が出てくること、ドキュメント名が不定長であることによる実装の煩雑さを避けるため、各ドキュメントに番号を振り、それを転置行列に記録するのが通例です。 |
---|---|
ドキュメント番号による昇順ソート | 転置行列内の各要素では、ドキュメント番号について昇順にリスト化します。 これにより、目的の検索木のカットを実装することが可能となります。 |
出現位置による昇順ソート | ドキュメント番号による昇順ソートと同じ理由で、出現位置についても昇順にリスト化します。 |
[長さ1:4bytes][c0:4bytes][c1:4bytes][長さ2:4bytes][d0:4bytes][a0:4bytes]...と記述されています。ここで、長さ1は自身を含まないリストのバイト数、c0, c1 は出現した文字(UCS4フォーマット)、、長さ2は自身を含まない出現位置リストのバイト数、d はドキュメント番号、a0 は出現位置となっています。
18 00 00 00 54 00 00 00 6f 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 ...となっていきます。(詳細は実装例を見てください。)
[(d0', [a0',...]), ...]が検索結果となります。
search_hash.bin |
2つの文字からなる tuple から 8 ビットの数値を算出するハッシュテーブルです。計算値は
h = (ord(c0) & 255) ^ ((ord(c1) + 11) & 255となります。 |
search_classify.bin |
転置行列本体で、実態は以下のフォーマットを持つバイナリファイルです。 フォーマットはすでに記述しました。ただし、実装ではドキュメント番号ではなく、search_docs.bin ファイルのオフセットを格納しています。 |
search_docs.bin |
全ての HTML ファイル1つにまとめたファイルで、以下のフォーマットを持ちます。
[link長さ(2bytes)][link][title長さ(2bytes)][title][body長さ(2bytes)][body]...ここで link は URI の path 部分、title は title タグの中身、body は body タグの中身からタグを全て取り除いた文字列を指します。 |