मैं एड्रियान ग्रैंड के talk on Lucene's index architecture देख रहा था और एक बिंदु वह बनाता है कि ल्यूसीन अपने उलटा सूचकांक के शब्दकोश भाग का प्रतिनिधित्व करने के लिए क्रमबद्ध सरणी का उपयोग करता है। हैश टेबल ("क्लासिक" उलटा इंडेक्स डेटा स्ट्रक्चर) के बजाय क्रमबद्ध सरणी का उपयोग करने के पीछे तर्क क्या है?ल्यूसीन अपनी उलटा इंडेक्स के लिए हैश टेबल की बजाय सरणी का उपयोग क्यों करता है?
हैश टेबल ओ (1) सम्मिलन और पहुंच प्रदान करते हैं, जो मुझे लगता है कि यह जल्दी से प्रसंस्करण प्रश्नों और सूचकांक खंडों को विलय करने में बहुत मदद करेगा। दूसरी तरफ, सॉर्ट किए गए सरणी केवल ओ (लॉगएन) पहुंच और (गैसपी) ओ (एन) सम्मिलन की पेशकश कर सकते हैं, हालांकि 2 सॉर्टेड सरणी विलय करना एक ही जटिलता है जो 2 हैश टेबल विलय कर रहा है।
हैश टेबल के लिए एकमात्र डाउनसाइड्स जो मैं सोच सकता हूं, एक बड़ी मेमोरी पदचिह्न (यह वास्तव में एक समस्या हो सकती है) और कम कैश मित्रता (हालांकि एक क्रमबद्ध सरणी की पूछताछ जैसे ऑपरेशंस को बाइनरी खोज की आवश्यकता होती है जो कैश के समान है) ।
तो क्या हो रहा है? ल्यूसीन देवों के पास सरणी का उपयोग करने के लिए बहुत अच्छा कारण होना चाहिए। क्या स्केलेबिलिटी के साथ कुछ करना है? डिस्क पढ़ने की गति? कुछ और पूरी तरह से?
उत्कृष्ट प्रश्न! – Eugene
कई कारणों से ल्यूसीन हैश टेबल का उपयोग नहीं करता है इस जवाब में @Ivan द्वारा प्रदान किया गया है: https://stackoverflow.com/a/48053519/1697566 –