2011-05-29 21 views
14

में सभी दस्तावेज़ों को पुनर्निर्मित करने के लिए कैसे करें मैं स्कीमा में कुछ फ़ील्ड प्रकारों को बदलने के लिए मिल रहा हूं, ऐसा लगता है कि इस प्रकार के परिवर्तन के साथ वर्तमान सोलर इंडेक्स डेटा में सभी दस्तावेज़ों को फिर से सूचीबद्ध करना होगा।सोलर डेटा

प्रश्न सभी दस्तावेज़ों को "पुनः अनुक्रमणिका" करने के बारे में प्रश्न है? एक समाधान जिसे मैं सोच सकता हूं कि खोज इंटरफ़ेस के माध्यम से सभी दस्तावेज़ों को "क्वेरी" करना है और एक्सएमएल या जेएसओएन में एक बड़ी फ़ाइल डंप करना है, फिर इसे सोलर के लिए इनपुट एक्सएमएल प्रारूप में परिवर्तित करें, और इसे स्कीमा बनाने के लिए फिर से सोलर पर लोड करें परिवर्तन होता है।

क्या कोई बेहतर तरीका यह अधिक कुशलतापूर्वक कर सकता है? तुम्हारे सुझाव के लिए धन्यवाद।

उत्तर

12

सबसे पहले, किसी क्वेरी के परिणामों को डंप करने से आपको मूल डेटा नहीं मिल सकता है यदि आपके पास अनुक्रमित फ़ील्ड हैं और संग्रहीत नहीं हैं। आम तौर पर, इनपुट की प्रतिलिपि को एसओएलआर में एक रूप में रखना सर्वोत्तम होता है जिसे आप आसानी से उपयोग करने के लिए इंडेक्स को स्क्रैच से पुनर्निर्माण के लिए उपयोग कर सकते हैं। उस स्थिति में, <delete><query>*:*</query></delete> पोस्ट करके <commit/> और फिर <optimize/> पोस्ट करके एक डिलीट क्वेरी चलाएं। उसके बाद आपकी अनुक्रमणिका खाली है और आप नए स्कीमा का उपयोग करने वाले नए दस्तावेज़ जोड़ सकते हैं।

लेकिन आप नई स्कीमा फ़ाइल के साथ SOLR को पुनरारंभ करने के बाद <optimize/> चलाने के साथ दूर हो सकते हैं। बैकअप रखना अच्छा होगा जहां आप परीक्षण कर सकते हैं कि यह आपके कॉन्फ़िगरेशन के लिए काम करता है।

ल्यूक नामक एक उपकरण है जिसका उपयोग ल्यूसीन इंडेक्स को ब्राउज़ और निर्यात करने के लिए किया जा सकता है। मैंने कभी इसे स्वयं नहीं किया है, लेकिन यह आपके डेटा को निर्यात करने में आपकी सहायता कर सकता है ताकि आप इसे पुनः आयात कर सकें।

+0

धन्यवाद माइकल। ऐसा लगता है कि पूर्ण पुन: अनुक्रमण बनाने के लिए स्रोत स्रोत डेटा का पूर्ण बैकअप होना बेहतर है – Yinan

2

किसी क्वेरी के सभी परिणामों को डंप करने का विचार आपको अधूरा या अमान्य डेटा दे सकता है क्योंकि आप अपने सूचकांक के सभी डेटा को सतह पर नहीं देख सकते हैं।

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

2

यदि सोलर में दस्तावेज़ों की संख्या बड़ी है और आपको पूछताछ के लिए सोलर सर्वर उपलब्ध कराने की आवश्यकता है, तो पृष्ठभूमि में दस्तावेज़ों को फिर से जोड़ने/पुन: अनुक्रमणिका करने के लिए अनुक्रमण कार्य शुरू किया जा सकता है।

प्रत्येक दस्तावेज़ के लिए अंतिम समयबद्ध टाइमस्टैम्प रखने के लिए एक नया क्षेत्र पेश करना सहायक होता है, इसलिए किसी भी इंडेक्सिंग/पुन: अनुक्रमण के मुद्दों के मामले में, पुनर्विक्रेता दस्तावेजों के इंतजार की पहचान करना संभव होगा।

पूछताछ की विलंबता में सुधार करने के लिए, प्रत्येक प्रतिबद्धता के बाद कैश को रखने के लिए कॉन्फ़िगरेशन पैरामीटर के साथ खेलना संभव है।

0

एक PHP script है जो वास्तव में यह करता है: अपने सभी सौर दस्तावेज़ों को वापस लाएं और पुन: प्रस्तुत करें, उन्हें पुन: संशोधित करें।

अनुकूलन के लिए, कमांड लाइन से फोन:

curl http://<solr_host>:<port>/solr/<core_name>/update -F stream.body=' <optimize />'