LuceneのRAMDirectoryはいつ使用しますか?他のストレージメカニズムよりも優れている点は何ですか?最後に、簡単なコード例はどこで見つけることができますか?RAMDirectoryの使用
13
A
答えて
16
インデックスデータを永続的に保存しない場合。私はテスト目的のためにこれを使用します。 RAMDirectoryにデータを追加します。ユニットはRAMDirでテストしますか?
public static void main(String[] args) {
try {
Directory directory = new RAMDirectory();
Analyzer analyzer = new SimpleAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, true);
OR
public void testRAMDirectory() throws IOException {
Directory dir = FSDirectory.getDirectory(indexDir);
MockRAMDirectory ramDir = new MockRAMDirectory(dir);
// close the underlaying directory
dir.close();
// Check size
assertEquals(ramDir.sizeInBytes(), ramDir.getRecomputedSizeInBytes());
// open reader to test document count
IndexReader reader = IndexReader.open(ramDir);
assertEquals(docsToAdd, reader.numDocs());
// open search zo check if all doc's are there
IndexSearcher searcher = new IndexSearcher(reader);
// search for all documents
for (int i = 0; i < docsToAdd; i++) {
Document doc = searcher.doc(i);
assertTrue(doc.getField("content") != null);
}
// cleanup
reader.close();
searcher.close();
}
通常物事がRAMDirectoryと一緒に作業する場合、それは他の人とかなりの作業罰金でしょう。インデックスを永続的に保存することができます。
これに代わるものはFSDirectoryです。この場合のファイルシステムのアクセス許可(RAMDirectoryでは無効)
機能上、RAMDirectoryは(RAMDirectoryがFSDirectoryよりも目に見えるほど高速であることを除けば)RAMDirectoryとは明確な利点はありません。彼らは両方とも2つの異なるニーズに対応します。
- RAMDirectory - >プライマリメモリ
- FSDirectory - >セカンダリメモリ
&ハードディスクをRAMにかなり似ています。
RAMDirectoryがメモリ制限を超えるとどうなるかわかりません。 System.SystemExceptionスロー
:私は
OutOfMemoryException例外を除く外思います。
関連する問題
- 1. RAMDirectoryで使用されるメモリ
- 2. RAMDirectoryを使用する際の賛否両論を知りたい
- 3. RAMDirectoryを更新する最良の方法
- 4. RAMDirectoryを使用し、オブジェクトサイズが2GBを超える場合にOutOfMemoryExceptionを回避する方法
- 5. Lucene.Net RAMDirectoryをディスクに書き込む方法は?
- 6. LuceneでFSdirectoryインデックスファイルをRAMdirectoryとして読み込む方法は?
- 7. デリゲートメソッドを使用したディスパッチセマフォの使用
- 8. ファブファイル用のスフィンクスオートドックの使用
- 9. WCFを使用したLAN用の仮想化ソフトウェアの使用
- 10. リクエスト/レスポンス用のJsonを使用したWCFサービスメソッドの使用
- 11. System.Reflectionの使用
- 12. wxPython:EVT_IDLEの使用
- 13. スタンフォードパーサーマルチスレッドの使用
- 14. JTreeTableの使用
- 15. PropertyInfo.GetValue()の使用
- 16. グリッドイベントの使用
- 17. ストリームイテレータの使用?
- 18. JavaScriptSerializer.Deserializeの使用
- 19. ジェネリックリストの使用
- 20. ローカルリポジトリの使用
- 21. メインスレッドの使用
- 22. 使用jQueryの
- 23. ディスパッチャの使用?
- 24. SetFetchModeの使用
- 25. レンダスクリプトの使用
- 26. モバイルデータの使用
- 27. shared_ptrの使用
- 28. ProjectItems.itemの使用
- 29. keybd_eventの使用
- 30. ウェブフォントの使用
内部的には、ファイルを整理するために並行ハンスマップを使用します。 – Njax3SmmM2x2a0Zf7Hpd