デスクトップ アプリケーションでは、転置インデックスを使用して単純な検索エンジンを実装しました。
残念ながら、一部のユーザーのデータセットは非常に大きくなる可能性があります。たとえば、転置インデックスが作成される前に最大 1 GB のメモリを消費します。転置インデックス自体は、インデックスを作成するデータとほぼ同じ量のメモリを消費します (さらに 1GB の RAM)。
アプリケーションごとに 2GB のメモリという 32 ビット Windows の制限に達したり、スペックの低いコンピュータを使用しているユーザーがメモリの需要に対処するのに苦労したりするため、明らかにこれはメモリ不足エラーの問題を引き起こします。
逆インデックスは次のように保存されます。
Dictionary<string, List<ApplicationObject>>
これは、各オブジェクトが処理されるデータ ロード中に作成され、applicationObject のキー文字列と説明語が転置インデックスに格納されます。
だから、私の質問は次のとおりです。検索インデックスをより効率的に空間的に保存することは可能ですか? おそらく、別の構造または戦略を使用する必要がありますか? あるいは、一種の CompressedDictionary を作成することは可能ですか? たくさんの文字列を保存しているので、圧縮性が高いと思います。