हमारे डेस्कटॉप एप्लिकेशन में, हमने inverted index का उपयोग करके एक सरल खोज इंजन लागू किया है।आवेदन के लिए इन-मेमोरी सर्च इंडेक्स बहुत अधिक मेमोरी लेता है - कोई सुझाव?
दुर्भाग्यवश, हमारे कुछ उपयोगकर्ता डेटासेट बहुत बड़े हो सकते हैं, उदा। उलटा इंडेक्स बनने से पहले ~ 1 जीबी मेमोरी लेना। उलटा इंडेक्स स्वयं बहुत मेमोरी लेता है, जितना डेटा अनुक्रमित होता है (एक और 1 जीबी रैम)।
स्पष्ट रूप से यह स्मृति त्रुटियों के साथ समस्याएं पैदा करता है, क्योंकि 32 बिट विंडोज़ प्रति 2 जीबी मेमोरी प्रति सेकंड की सीमा है, या कम स्पेस कंप्यूटर वाले उपयोगकर्ता स्मृति मांग से निपटने के लिए संघर्ष करते हैं।
हमारे औंधा सूचकांक एक के रूप में संग्रहीत किया जाता है:
Dictionary<string, List<ApplicationObject>>
और यह बनाई गई है डेटा लोड होने के दौरान जब प्रत्येक वस्तु के इस तरह संसाधित किया जाता है कि applicationObject के प्रमुख स्ट्रिंग और विवरण शब्द उल्टे सूचकांक में जमा हो जाती है।
तो, मेरा सवाल है: क्या खोज सूचकांक को अधिक कुशलता से अंतरिक्ष-वार स्टोर करना संभव है? शायद एक अलग संरचना या रणनीति का उपयोग करने की जरूरत है? वैकल्पिक रूप से एक प्रकार का संपीड़ित डिक्शनरी बनाना संभव है? चूंकि यह बहुत सारे तारों को संग्रहित कर रहा है, इसलिए मैं अपेक्षा करता हूं कि यह अत्यधिक संपीड़ित हो।
यदि संभव हो तो मैं इसे टालना चाहूंगा, क्योंकि इन-मेमोरी सर्च इंडेक्स होना आसान होगा। लेकिन शायद यह संभव नहीं है, लेकिन ऐसा लगता है कि * मुझे * संभव होना चाहिए। – RickL