2011-01-14 16 views
5

मैं ल्यूसीन 3.0.3 का उपयोग कर रहा हूं। मैंने एक वसंत बीन बनाया है जो एक ही इंडेक्स पर सभी परिचालनों को समाहित करने का लक्ष्य रखता है।ल्यूसीन में प्रतिबद्ध परिवर्तन दृश्यता। सर्वोत्तम अभ्यास

public class IndexOperations { 

    private IndexWriter writer; 
    private IndexReader reader; 
    private IndexSearcher searcher; 

    public void init() {...} 
    public void destroy() {...} 

    public void save(Document d) {...} 
    public void delete(Document d) {...} 
    public List<Document> list() {...} 

} 

आदेश तेजी से परिवर्तन और खोजों की अनुमति के लिए में, मैं लेखक, पाठक और खोजकर्ता खुला एक अच्छा विचार हो सकता है छोड़ने में सोचा। लेकिन समस्या यह है कि पाठकों द्वारा किए गए परिवर्तनों को फिर से खोलने तक पाठकों द्वारा नहीं देखा जा सकता है। और यह ऑपरेशन महंगा हो सकता है, इसलिए शायद तेज खोजों के लिए एक अच्छा विचार नहीं है।

इस विशिष्ट परिदृश्य के लिए सबसे अच्छा तरीका क्या होगा?

उत्तर

4

आपको लेखक को हमेशा खुला रखना चाहिए, लेकिन पाठक/खोजकर्ता को जारी नहीं रखना चाहिए। जब आपको एक खोजकर्ता की आवश्यकता होती है तो बस IndexSearcher srch = new IndexSearcher(writer.getReader()); करें इस प्रकार खोजकर्ता को हालिया परिवर्तन मिलेंगे, भले ही उन्हें डिस्क पर फ्लश नहीं किया गया हो (आपको दोनों दुनिया के सर्वश्रेष्ठ प्रदान करते हैं)।

+0

@Xoradap: अच्छा विचार, मैंने इसके बारे में नहीं सोचा था। लेकिन सूचकांक बड़ा होने पर यह बहुत महंगा नहीं होगा? – sinuhepop

+0

@ सिनुहे: नहीं, यह करने का यह अनुशंसित तरीका है। लेखक आवश्यकतानुसार डिस्क पर फ्लश करेगा। – Xodarap

+0

@Xoradap: कई परीक्षणों के बाद, आपकी विधि बहुत बढ़िया है! धन्यवाद। – sinuhepop

2

इस तरह के उपयोग-मामले के लिए, मैं अत्यधिक Compass की सिफारिश कर सकता हूं, जो ल्यूसीन के आसपास एक उच्च स्तरीय अमूर्तता है। आपके प्रश्न के लिए विशिष्ट, यह बेहतर समवर्ती नियंत्रण, प्लस लेन-देन प्रदान करता है, जो आपके पास पाठक/लेखक/खोजकर्ता समस्या को मैन्युअल रूप से नियंत्रित करने की आवश्यकता को रोकता है। यह बहुत चालाक सामान है, और ईमानदार होने के लिए यह सुंदर बारोक हो सकता है, लेकिन यह समस्या का एक अच्छा समाधान है।

नकारात्मक पक्ष पर, यह 3.0 के बजाय लुसीन 2.9 पर आधारित है, इसलिए यह 3.0 जितना तेज़ नहीं हो सकता है, और यह अब सक्रिय रूप से बनाए रखा नहीं गया है, लेकिन यह स्थिर, काफी अच्छी तरह से प्रलेखित है, और कच्चे से उपयोग करने में बहुत आसान है Lucene।

+1

मैंने कम्पास और सोलर के बारे में पढ़ा है। मुझे लगता है कि वे इस बहुत ही सरल उपयोग के मामलों के लिए जरूरी नहीं हैं, और शायद वे इन वस्तुओं को खोलने और बंद करने के समान तरीके से कर रहे हैं। कम्पास के बारे में, मैं आपके कारणों के कारण थोड़ा निराश हूं, लेकिन शायद मैं एक और कोशिश करूंगा। धन्यवाद। – sinuhepop

+0

@ सिनुहे: निश्चित रूप से, यह आवश्यक नहीं है। हालांकि, यह आपके काम को आसान बना देगा। – skaffman

+0

बस एक तरफ नोट: लोचदार खोज कंपास 3.0 है :) इसे आजमाएं। यह सोलर इत्यादि से अधिक हालिया ल्यूसीन का उपयोग करता है – Karussell

संबंधित मुद्दे