2011-04-13 3 views
6

मैं सोलर के साथ एक पूर्ण शुरुआत कर रहा हूं, इसलिए मेरे साथ भालू। :)सोलर और माईएसक्यूएल, एक अद्यतन इंडेक्स कैसे रखें, और, यदि यह आसान है तो डीबी भी आवश्यक है?

मेरी वर्तमान परियोजना में मेरे पास एक बहुत ही सरल डीबी है - केवल 1 तालिका जिसमें 4 फ़ील्ड हैं: आईडी, नाम, विषय, msg।

जिस तरह से मैं समझता हूं, हर बार जब कोई नया रिकॉर्ड जोड़ा जाता है (या हटा दिया जाता है), मुझे उस रिकॉर्ड को इंडेक्स में जोड़ना होगा, अनिवार्य रूप से दो ऑपरेशन करना: डीबी में रिकॉर्ड डालना और इसे इंडेक्स में जोड़ना ।

क्या यह मानक प्रक्रिया है, या क्या कुछ अंतराल पर या कभी भी अपडेट होने पर डीबी तालिका को स्वचालित रूप से पुन: संशोधित करने के लिए सोलर को निर्देशित करने का कोई तरीका है?

इसके अलावा, चूंकि तालिका बहुत सरल है, क्या यह डीबी में इस जानकारी को स्टोर करने के लिए भी समझ में आता है? क्यों न केवल इसे सोलर इंडेक्स में रखें, क्योंकि मैं चाहता हूं कि रिकॉर्ड्स नाम, विषय और संदेश द्वारा खोजे जा सकें?

मेरा सेटअप जावा, हाइबरनेट, MySQL, और Solrj है।

उत्तर

5

किसी डेटाबेस का उपयोग करना या वास्तव में इस शब्द को कितना समय तक रखना और बढ़ाना नहीं है, इस बारे में उबालता है। पूरे डेटाबेस को दूषित करने के मुकाबले एक संपूर्ण सोलर इंडेक्स (और अपना सभी डेटा खोना) को दूषित करना बहुत आसान है। इसके अलावा, सोलर को ताज़ा इंडेक्स से शुरू किए बिना स्कीमा को संशोधित करने के लिए बहुत अच्छा समर्थन नहीं है। उदाहरण के लिए, आप एक और फ़ील्ड बस ठीक जोड़ सकते हैं, लेकिन आप अपनी अनुक्रमणिका को मिटाए बिना फ़ील्ड का नाम या प्रकार बदल नहीं सकते।

यदि आप डीबी के साथ जाते हैं, तो आप DataImportHandler का उपयोग कर सीधे डीबी से इंडेक्स में सोलर सेट कर सकते हैं। आपकी स्कीमा के लिए, यह बहुत सरल होना चाहिए, लेकिन यह दर्दनाक हो सकता है क्योंकि आपका डीबी अधिक जटिल हो जाता है। मुझे लगता है कि आपके द्वारा पहले से सेट की गई हाइबरनेट ऑब्जेक्ट्स का उपयोग करने के लिए कुछ लाभ है और केवल उन्हें Solrj का उपयोग करके डालना है। DataImportHandler के साथ अन्य दर्द बिंदु यह है कि यह पूरी तरह से http का उपयोग कर नियंत्रित है। तो आपको wget या curl का उपयोग करके शेड्यूलिंग को संभालने के लिए अलग क्रॉन नौकरियां (या कुछ अन्य कोड) प्रबंधित करने की आवश्यकता है।

-1

एक डीबी देखने का एकमात्र कारण उपयोगी हो सकता है कि यह बेहतर लेनदेन समर्थन है। वैसे भी लुसीन (एसओएलआर का अंतर्निहित इंजन) केवल एक इंडेक्सराइटर की अनुमति दे सकता है, इसलिए आप समवर्ती संशोधन द्वारा अंतर्निहित रिकॉर्ड को आसानी से खराब नहीं कर सकते हैं।

जहां तक ​​मेरा संबंध है, आपको डीबी की आवश्यकता नहीं है। एसओएलआर आपको जो भी चाहिए उसे संभाल लेगा।

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