जैसा कि जेएस 441 ने इंगित किया है कि अपाचे ल्यूसीन एक अच्छा विकल्प है, लेकिन केवल तभी यदि आप टर्म आधारित खोज करने जा रहे हैं, तो Google कैसे काम करता है। यदि आपको मनमानी तारों की खोज करने की आवश्यकता है जो शब्दों को फैलाते हैं तो लुसीन आपकी मदद नहीं करेगा।
बाद के मामले में आप सही हैं, आपको कुछ प्रकार के प्रत्यय पेड़ का निर्माण करना होगा। एक प्रत्यय पेड़ बनाने के बाद आप एक साफ चाल कर सकते हैं, इसे फ़ाइल में लिखना और मेमोरी स्पेस में इसे मिटाना है। इस तरह आप पूरे पेड़ को रैम में रखने के लिए स्मृति बर्बाद नहीं करेंगे, लेकिन आप अक्सर पेड़ के हिस्सों को स्वचालित रूप से कैश किए जाते हैं। एमएमएपी की कमी यह है कि प्रारंभिक खोज कुछ हद तक धीमी हो सकती है। यह भी नहीं होगा यदि आपकी फाइलें अक्सर बदलती हैं।
केवल संपादित फ़ाइलों को खोजने के मामले में मदद करने के लिए, आप दो इंडेक्स रख सकते हैं, एक बड़ी फाइलों के लिए और दूसरा हाल ही में संपादित फ़ाइलों के लिए। तो जब आप खोज करते हैं तो आप दोनों सूचकांक में खोज करेंगे। समय-समय पर आपको स्थायी फाइलों को नई फाइलों की सामग्री के साथ पुनर्निर्माण करना चाहिए और पुराने को प्रतिस्थापित करना चाहिए।
यहाँ के कुछ उदाहरण हैं जब Lucene अच्छा है और जब प्रत्यय पेड़ अच्छा है:
मान लें आप एक दस्तावेज़ है जिसमें निम्न शामिल है:
एक त्वरित भूरे कुत्ते आलसी लोमड़ी लांघ गया है।
Lucene निम्न खोज के लिए अच्छा है खोजें अच्छी तरह से काम:
'* ick * खुद'
इस प्रकार की खोज बहुत धीमी गति से
'क्यू * ick भूरे रंग d * जी'
और खोज के इस प्रकार चलेंगे कुछ भी
कभी नहीं मिलेगा
"ick brown d"
लुसीन भी अच्छा है जब आप अपने दस्तावेज़ों को शब्दों के बैग के रूप में देखते हैं। तो आप इस
त्वरित लोमड़ी
जो तुम सभी दस्तावेजों कोई बात नहीं क्या बीच में है जल्दी शब्द और लोमड़ी है कि मिल जाएगा इस तरह की खोजों को आसानी से कर सकते हैं।
दूसरी ओर प्रत्यय पेड़ दस्तावेज़ के भीतर सबस्ट्रिंग के सटीक मिलानों की खोज के साथ अच्छी तरह से काम करते हैं, यहां तक कि उन मामलों में जब आपकी खोज शब्द को फैलती है और शब्द के मध्य में शुरू होती है और समाप्त होती है।
बड़े सरणियों के प्रत्यय के पेड़ के निर्माण के लिए बहुत अच्छा एल्गोरिथ्म here वर्णन किया गया है (Warnign paywalled)।
वाह। महान जवाब और बस जो मैं खोज रहा था! –
वाह! यह वास्तव में एक अच्छा एल्गोरिदम है! https://swtch.com/~rsc/regexp/regexp4.html – breandan