के साथ सोलर सर्वर पक्ष पर सोलर दस्तावेज़ों को कैसे अपडेट करें मेरे पास लाखों रिकॉर्ड हैं।
मैं एक कस्टम हैंडलर जोड़ना चाहता हूं जो मौजूदा दस्तावेजों को स्कैन करता है और किसी शर्त के आधार पर फ़ील्ड में से एक अपडेट करता है (उदाहरण के लिए आयु> 12)।
मैं ग्राहक और पीछे के लाखों दस्तावेज़ भेजने से बचने के लिए इसे सौर सर्वर पक्ष पर करना पसंद करता हूं।
मैं एक सोलर प्लगइन लिखने की सोच रहा था जो एक क्वेरी प्राप्त करेगा और क्वेरी दस्तावेज़ों पर कुछ फ़ील्ड अपडेट करेगा (जैसे क्वेरी हैंडलर द्वारा हटाएं)।
मैं सोच रहा था कि मौजूदा समाधान या बेहतर विकल्प हैं या नहीं।
मैं थोड़ी देर के लिए वेब खोज रहा था और सोलर प्लगइन्स के उदाहरण नहीं ढूंढ पाए जो दस्तावेज़ अपडेट करते हैं (मुझे अद्यतन हैंडलर को बढ़ाने की आवश्यकता नहीं है)।
मैंने एक प्लग-इन लिखा है जो निम्न कोड का उपयोग करता है जो ठीक काम करता है लेकिन जितनी जल्दी हो सके उतना तेज़ नहीं है।
वर्तमान में मैं कार्य करें:कस्टम हैंडलर/प्लगइन
AddUpdateCommand addUpdateCommand = new AddUpdateCommand(solrQueryRequest);
DocIterator iterator = docList.iterator();
SolrIndexSearcher indexReader = solrQueryRequest.getSearcher();
while (iterator.hasNext()) {
Document document = indexReader.doc(iterator.nextDoc());
SolrInputDocument solrInputDocument = new SolrInputDocument();
addUpdateCommand.clear();
addUpdateCommand.solrDoc = solrInputDocument;
addUpdateCommand.solrDoc.setField("id", document.get("id"));
addUpdateCommand.solrDoc.setField("my_updated_field", new_value);
updateRequestProcessor.processAdd(addUpdateCommand);
}
लेकिन यह बहुत महंगा है के बाद से अद्यतन हैंडलर फिर से दस्तावेज है जो मैं पहले से ही हाथ में पकड़ लायेगा।
क्या ल्यूसीन दस्तावेज़ को अपडेट करने और कैश, अतिरिक्त सोलर लॉजिक इत्यादि जैसे सभी सोलर संबंधित कोड को ध्यान में रखते हुए इसे वापस लिखने का एक सुरक्षित तरीका है?
मैं इसे SolrInputDocument में बदलने की सोच रहा था और फिर दस्तावेज़ को सोलर के माध्यम से जोड़ता हूं लेकिन मुझे पहले सभी फ़ील्ड को बदलने की आवश्यकता है।
अग्रिम धन्यवाद, एवरर
आप शायद पहले से ही यह जानते हैं, लेकिन सोलर में, दस्तावेज़ को अपडेट करने का कार्य वास्तव में मूल दस्तावेज़ को बदले गए मान वाले अद्यतन दस्तावेज़ के साथ बदलना है। परिवर्तनों को संभालने का सामान्य तरीका स्रोत प्रणाली से सूचकांक में धक्का देना है, आमतौर पर किसी दिनांक या किसी अन्य संकेत के आधार पर; किसी भी तरह से सूचकांक स्थानीय रूप से अद्यतन नहीं है। क्या आप जो कुछ करने की कोशिश कर रहे हैं उसके लिए आप थोड़ा और संदर्भ दे सकते हैं? – icey502
मुझे डिलीट/ऐड स्टफ के बारे में पता है। मेरे परिदृश्य में डेटा है जो केवल सोलर इंडेक्स (गणना क्षेत्र) में मौजूद है। बाद में मुझे उन सभी दस्तावेजों के लिए किसी फ़ील्ड में कुछ डेटा जोड़ने की आवश्यकता है जो गणना किए गए फ़ील्ड (उदाहरण के लिए "आयु" फ़ील्ड) के आधार पर क्वेरी का उत्तर दें। क्या यह सौर लेखक पर एक लेखक खोलने और दस्तावेजों को बदलने के लिए जटिल है? –
मुझे इस सटीक परिदृश्य का सामना नहीं करना पड़ा है, लेकिन मानते हुए मान (और बाद के अपडेट) के लिए "ट्रिगर" मानना एक सूचकांक अपडेट है, शायद यह लिंक सहायक होगा: http://stackoverflow.com/questions/6593887/solr -और-कस्टम-अपडेट-हैंडलर – icey502