मुझे ल्यूसीन की राम डायरेक्टरी का उपयोग कब करना चाहिए? अन्य भंडारण तंत्र पर इसके फायदे क्या हैं? अंत में, मुझे एक साधारण कोड उदाहरण कहां मिल सकता है?RAMDirectory का उपयोग
उत्तर
जब आप अपने इंडेक्स डेटा को स्थायी रूप से स्टोर नहीं करना चाहते हैं। मैं परीक्षण उद्देश्यों के लिए इसका उपयोग करता हूं। अपने RAMDirectory में डेटा जोड़ें, RAMDir में अपने यूनिट परीक्षण करें।
उदा।
public static void main(String[] args) {
try {
Directory directory = new RAMDirectory();
Analyzer analyzer = new SimpleAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, true);
या
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 के साथ मान्य नहीं है)
कार्यात्मक रूप से, FSDirectory पर RAMDirectory का कोई विशिष्ट लाभ नहीं है (तथ्य यह है कि RAMDirectory FSDirectory से स्पष्ट रूप से तेज़ होगा)। वे दोनों सर्वर दो अलग-अलग जरूरतों को पूरा करते हैं।
- RAMDirectory -> प्राथमिक स्मृति
- FSDirectory -> माध्यमिक स्मृति
सुंदर समान & हार्ड डिस्क राम को।
मुझे यकीन नहीं है कि RAMDirectory के साथ क्या होगा यदि यह स्मृति सीमा से अधिक है। System.SystemException
फेंक दिया: मैं एक
OutOfMemoryException सिवाय चाहते हैं।
हाय, आपकी प्रतिक्रिया के लिए धन्यवाद ... FSDirectory पर RAMDirectory का उपयोग करने का क्या फायदा है? और, अगर सूचकांक का आकार रैम मेमोरी से अधिक हो तो क्या होगा? – Jimmy
किसी ऑब्जेक्ट के आकार में 2 जीएम सीमा है। यदि आपकी रैमडिरेकोट्री उस से अधिक है, तो आपके पास बहुत सारी रैम होने पर भी आउटऑफमेमरी अपवाद प्राप्त होगा। – Barka
आंतरिक रूप से यह फ़ाइलों की व्यवस्था करने के लिए एक concurrenthasmap का उपयोग करता है। – Njax3SmmM2x2a0Zf7Hpd