インデックスを作成するドキュメントがいくつかあります。つまり、ドキュメントを読んで単語を抽出し、どのドキュメントのどの位置に表示されるかを保存してインデックスを作成する必要があります。
最初は単語ごとに個別のファイルを作成しています。2 つのドキュメントを検討してください。
ドキュメント 1
The Problem of Programming Communication with
ドキュメント 2
Programming of Arithmetic Operations
したがって、10 個の単語、8 個の固有の単語があります。だから私は8つのファイルを作成します。
算術演算によるプログラミング通信の問題
各ファイルで、どのドキュメントにどの位置に表示されるかを保存します。私が実装している実際の構造にはさらに多くの情報がありますが、この基本構造は目的に役立ちます。
ファイル名 ファイルの内容
1 1
問題 1 2
1 3 2 2 の
プログラミング 1 4 2 1
コミュニケーション 1 5
1 6で
算数 2 3
操作 2 4
意味。単語は、1 番目のドキュメントの 3 番目の位置と 2 番目のドキュメントの 2 番目の位置にあります。
最初のインデックスが完了したら、すべてのファイルを 1 つのインデックス ファイルに連結し、別のファイルに特定の単語が見つかるオフセットを保存します。
索引ファイル:
1 1 1 2 1 3 2 2 1 4 2 1 1 5 1 6 2 3 2 4
オフセット ファイル:
the 1 problem 3 of 5 programming 9 communications 13 with 15 arithmetic 17 operations 19
したがって、通信のインデックス情報が必要な場合は、ファイルの 13 番目の位置に移動し、(除く) 15 番目の位置、つまり次の単語のオフセットまで読み取ります。
これは、静的インデックス作成では問題ありません。しかし、1 つのインデックスを変更すると、ファイル全体を書き直す必要があります。ファイルの内容を動的に変更し、オフセットを何らかの方法で更新できるように、b ツリーをインデックス ファイルの構造として使用できますか? もしそうなら、誰かがこれがどのように機能するか、または私がこれをどのように実装できるかについていくつかのチュートリアルやライブラリに案内してくれますか?
このような長い記事をお読みいただき、誠にありがとうございます。
編集: B ツリーとバイナリ ツリーの違いを認識していませんでした。そこで、もともと二分木を使って質問しました。現在修正されています。