そうですね、RAMDirectoryを構築することはできますが、あなたのケースでは強くお勧めします。 RAMDirectoryは大きなデータセット(100MB以上)で使用するようには設計されていません。貴重なJAVAヒープ空間を構築して消費するためには、GC集中的で時間がかかります。
あなたはPERFの問題を持っている場合は、OSがメモリへのインデックスの一部をキャッシュする必要が下降検索速度を取得することを忘れないでください
this lucene FAQにdescibedすべてのガイドラインに従っていることを確認してください。これを行うには、OSにいくつかの無料のmemを利用できるようにする必要があります。 16Gbの物理RAMと8GBのインデックスがある場合は、8gでjvm Xmxを設定する必要があります。メモリをチェックする素晴らしいLinuxツールはhtopです。プロセスに使用されるRAM(ヒープスペース)とRAMがfilecacheとして黄色(インデックスデータ)として使用されます。
開発者の中には、アプリケーションの起動時にウォームアップクエリを実行して、インデックスがos filecacheによって読み込まれている間に最初のユーザーが数秒間立ち往生するのを防ぐものがあります。
あなたはまだあなたがRAMSでいくつかのトリックを試すことができますより良いperfを得ることができると思う場合。しかし、あなたはMMapDirectoryを使ってうまくチューニングされたOSやJVMよりも優れたパフォーマンスを得ることができるとは思っていません。
これは、RAMDirを使用しないで直接ロードする方が良いでしょう。osファイルキャッシュは、あなたのためにインデックスをmemにロードします。それに応じてjvm Xmxをセットアップすることを忘れないでください。あなたのケースでは少なくとも2Gのosにいくつかのfree memをしましょう。 (例えば、4GシステムではXmx2Gを使用する)。 – nomoa
@nomoa私はあなたが本当に直接読み込んでいることを理解していませんでした。どうやってするの?私はtomcatで実行されているWebアプリケーションでそれを使用したいと考えています。 – anony
私はあなたがRAMDirectoryでより良い検索速度を持っていないことを意味するjavaのdocを見てください:警告:このクラスは巨大なインデックスを扱うつもりはありません。 jvm paramsとos params(linux上でswappiness)を調整することで、より速い検索速度が得られます。いくつかのlucene perf FAQを見てください。 – nomoa