ओपी के प्रश्नों का उत्तर देने के अलावा, मैं अपाचे सोलर पर सरल इंट्रोडक्शन से विस्तृत इंस्टॉलेशन और कार्यान्वयन तक कुछ अंतर्दृष्टि फेंक देता हूं ।
सरल परिचय
जिस किसी को भी उपरोक्त खोज इंजन के साथ अनुभव हुआ है, या अन्य इंजन सूची में नहीं हैं - मुझे आपकी राय सुनना अच्छा लगेगा।
सोलर का उपयोग वास्तविक समय की समस्याओं को हल करने के लिए नहीं किया जाना चाहिए। खोज इंजन के लिए, सोलर बहुत ज्यादा खेल है और निर्दोष रूप से काम करता है ।
सोलर हाई ट्रैफिक वेब-एप्लिकेशन पर ठीक काम करता है ( मैंने कहीं पढ़ा कि यह इसके लिए अनुकूल नहीं है, लेकिन मैं उस कथन का समर्थन कर रहा हूं )। यह CPU का उपयोग करता है, CPU का नहीं।
- परिणाम प्रासंगिकता और रैंकिंग
बढ़ावा आप रैंक अपने परिणामों को शीर्ष पर दिखाई दें मदद करता है। कहते हैं, आप पहले namename और lastname फ़ील्ड में एक नाम जॉन के लिए खोज करने की कोशिश कर रहे हैं , और आप firstname फ़ील्ड को प्रासंगिकता देना चाहते हैं , फिर आपको दिखाए गए अनुसार firstname फ़ील्ड को बढ़ावा देना होगा ।
http://localhost:8983/solr/collection1/select?q=firstname:john^2&lastname:john
जैसा कि आप देख सकते हैं, Firstname फ़ील्ड को 2 के स्कोर के साथ बढ़ाया गया है।
SolrRelevancy पर अधिक
गति अविश्वसनीय रूप से तेज है और उस पर कोई समझौता नहीं है। जिस कारण मैं सोलर चला गया ।
अनुक्रमण गति के बारे में, Solr भी संभाल कर सकते हैं कार्यभार संभाला अपने डेटाबेस तालिकाओं से। एक उच्च और जटिल JOIN अनुक्रमण गति को प्रभावित करता है। हालांकि, एक विशाल रैम कॉन्फिग इस स्थिति से आसानी से निपट सकता है।
उच्चतर RAM, Solr की अनुक्रमण गति जितनी तेज़ होती है।
- Django के साथ उपयोग में आसानी और एकीकरण में आसानी
सोलर और Django को एकीकृत करने का प्रयास कभी नहीं किया गया , हालांकि आप हेस्टैक के साथ ऐसा कर सकते हैं । मुझे उसी पर कुछ दिलचस्प लेख और यहाँ इसके लिए गितूब मिला ।
- संसाधन आवश्यकताएँ - साइट को VPS पर होस्ट किया जाएगा, इसलिए आदर्श रूप से खोज इंजन को बहुत अधिक RAM और CPU की आवश्यकता नहीं होगी
Solr RAM पर प्रजनन करता है, इसलिए यदि RAM अधिक है, तो आपको Solr के बारे में चिंता करने की आवश्यकता नहीं है ।
सोलर का रैम उपयोग पूर्ण-अनुक्रमण पर होता है यदि आपके पास कुछ अरब रिकॉर्ड हैं, तो आप इस स्थिति से निपटने के लिए स्मार्ट तरीके से डेल्टा आयात का उपयोग कर सकते हैं। जैसा कि समझाया गया है, सोलर केवल एक वास्तविक समय समाधान है ।
सोलर अत्यधिक स्केलेबल है। SolrCloud पर एक नज़र है । इसकी कुछ प्रमुख विशेषताएं।
- शेयर (या शार्पिंग कई मशीनों के बीच इंडेक्स को वितरित करने की अवधारणा है, कहते हैं कि क्या आपका इंडेक्स बहुत बड़ा हो गया है)
- लोड संतुलन (यदि Solrj) सोलर क्लाउड के साथ का उपयोग किया जाता है यह स्वचालित रूप से राउंड-रॉबिन तंत्र का उपयोग करके लोड-संतुलन का ख्याल रखता है)
- वितरित खोज
- उच्च उपलब्धता
- अतिरिक्त विशेषताएं जैसे "क्या आपका मतलब था?", संबंधित खोजें, आदि
उपरोक्त परिदृश्य के लिए, आप SpellCheckComponent का उपयोग कर सकते हैं जो Solr के साथ पैक किया गया है । वहाँ एक बहुत अन्य विशेषताएं हैं, SnowballPorterFilterFactory रिकॉर्ड कहते हैं कि आप लिखकर, पुनः प्राप्त करने में मदद करता है पुस्तकों के बजाय किताब , आप से संबंधित परिणामों के साथ प्रस्तुत किया जाएगा किताब ।
यह जवाब मोटे तौर पर Apache Solr & MySQL पर केंद्रित है । Django के दायरे से बाहर है।
यह मानते हुए कि आप LINUX वातावरण में हैं, आप इस लेख को आगे बढ़ा सकते हैं। (मेरा एक Ubuntu 14.04 संस्करण था)
विस्तृत स्थापना
शुरू करना
डाउनलोड अपाचे Solr से यहाँ । यह संस्करण 4.8.1 होगा । आप नए संस्करण डाउनलोड कर सकते हैं, मुझे यह स्थिर लगा।
संग्रह को डाउनलोड करने के बाद, इसे अपनी पसंद के फ़ोल्डर में निकालें। कहो .. Downloads
या जो भी हो .. तो ऐसा ही लगेगाDownloads/solr-4.8.1/
अपने संकेत पर .. निर्देशिका के अंदर नेविगेट करें
shankar@shankar-lenovo: cd Downloads/solr-4.8.1
तो अब आप यहाँ हैं ।।
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1$
जेट्टी एप्लिकेशन सर्वर शुरू करें
जेट्टी निर्देशिका के उदाहरण फ़ोल्डर के अंदर उपलब्ध है solr-4.8.1
, इसलिए उसके अंदर नेविगेट करें और जेट्टी एप्लिकेशन सर्वर शुरू करें।
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/example$ java -jar start.jar
अब, टर्मिनल को बंद न करें, इसे कम से कम करें और इसे एक तरफ रहने दें।
(TIP: जेट्टी सर्वर को बैकग्राउंड में चलाने के लिए start.jar के बाद का उपयोग करें)
यह जाँचने के लिए कि क्या अपाचे सोलर सफलतापूर्वक चलता है, ब्राउज़र पर इस URL पर जाएँ।http: // localhost: 8983 / Solr
कस्टम पोर्ट पर जेट्टी चल रहा है
यह डिफ़ॉल्ट रूप में पोर्ट 8983 पर चलता है। आप यहाँ या सीधे jetty.xml
फ़ाइल के अंदर पोर्ट बदल सकते हैं ।
java -Djetty.port=9091 -jar start.jar
JConnector डाउनलोड करें
यह JAR फ़ाइल MySQL और JDBC के बीच एक सेतु का काम करती है , यहाँ प्लेटफ़ॉर्म इंडिपेंडेंट वर्जन डाउनलोड करें
इसे डाउनलोड करने के बाद, फोल्डर को निकालें और कॉपी करें mysql-connector-java-5.1.31-bin.jar
और इसे लेबर डायरेक्टरी में पेस्ट करें ।
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/contrib/dataimporthandler/lib
माईएसक्यूएल टेबल बनाना अपाचे सोलर से जोड़ा जाना है
उपयोग करने के लिए सोलर डालने के लिए, आपको खोज करने के लिए कुछ तालिकाओं और डेटा की आवश्यकता है। उसके लिए, हम एक तालिका बनाने और कुछ यादृच्छिक नामों को आगे बढ़ाने के लिए MySQL का उपयोग करेंगे और फिर हम Solr का उपयोग कर सकते हैं को MySQL से कनेक्ट करने के लिए और उस तालिका को अनुक्रमणित कर सकते हैं।
1.बल संरचना
CREATE TABLE test_solr_mysql
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
created TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
2. उपर्युक्त तालिका का अनुकरण करें
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jean');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jack');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jason');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Vego');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Grunt');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jasper');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Fred');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jenna');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Rebecca');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Roland');
कोर के अंदर हो रही है और काम के निर्देशों को जोड़ने
1. करने के लिए उपलब्ध है
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1/example/solr/collection1/conf
2. Solrconfig.xml को संशोधित करना
इस फ़ाइल में इन दोनों निर्देशों को जोड़ें ..
<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
अब DIH (डेटा आयात हैंडलर) जोड़ें
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3. db-data-config.xml फ़ाइल बनाएँ
यदि फ़ाइल मौजूद है तो अनदेखा करें, इन पंक्तियों को उस फ़ाइल में जोड़ें। जैसा कि आप पहली पंक्ति देख सकते हैं, आपको अपने MySQL डेटाबेस के क्रेडेंशियल्स प्रदान करने की आवश्यकता है । डेटाबेस का नाम, उपयोगकर्ता नाम और पासवर्ड।
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/yourdbname" user="dbuser" password="dbpass"/>
<document>
<entity name="test_solr" query="select CONCAT('test_solr-',id) as rid,name from test_solr_mysql WHERE '${dataimporter.request.clean}' != 'false'
OR `created` > '${dataimporter.last_index_time}'" >
<field name="id" column="rid" />
<field name="solr_name" column="name" />
</entity>
</document>
</dataConfig>
(TIP: आपके पास कितनी भी इकाइयाँ हो सकती हैं, लेकिन id फ़ील्ड के लिए देखें, यदि वे समान हैं तो इंडेक्सिंग छोड़ दी जाएगी।)
4. स्कीमा.xml फ़ाइल को संशोधित करें
दिखाए अनुसार इसे अपने स्कीमा.एक्सएमएल में जोड़ें ।।
<uniqueKey>id</uniqueKey>
<field name="solr_name" type="string" indexed="true" stored="true" />
कार्यान्वयन
इंडेक्सिंग
यहीं पर असली सौदा होता है। आप से डेटा का अनुक्रमण करने की ज़रूरत है MySQL के लिए Solr Solr क्वेरी की मेकअप उपयोग करने के लिए inorder।
चरण 1: सोलर व्यवस्थापक पैनल पर जाएं
अपने ब्राउज़र पर URL http: // localhost: 8983 / solr मारो । स्क्रीन इस तरह से खुलती है।
जैसे ही मार्कर इंगित करता है, लॉगिंग पर जाएं उपरोक्त विन्यास में से किसी में त्रुटियों की वजह से जाँच करने के इनवर्टर पर जाएं।
चरण 2: अपने लॉग की जाँच करें
ठीक है तो अब आप यहाँ हैं, जैसा कि आप बहुत सारे पीले संदेश (चेतावनी) कर सकते हैं। सुनिश्चित करें कि आपके पास लाल रंग में चिह्नित त्रुटि संदेश नहीं हैं। इससे पहले, हमारे कॉन्फ़िगरेशन पर हमने अपने db-data-config.xml पर एक चुनिंदा क्वेरी जोड़ी थी , कहते हैं कि अगर उस क्वेरी पर कोई त्रुटि थी, तो यह यहाँ दिखाया गया होगा।
ठीक है, कोई त्रुटि नहीं। हम जाने के लिए अच्छे हैं। आइए सूची में से संग्रह 1 को दर्शाए गए अनुसार चुनें और डेटाइमपोर्ट चुनें
चरण 3: DIH (डेटा आयात हैंडलर)
DIH, आप कनेक्ट हो जाएगा का उपयोग MySQL से Solr विन्यास फाइल के माध्यम से db-डेटा-config.xml से Solr इंटरफेस और जिस पर अनुक्रमित हो जाता है डेटाबेस से 10 रिकॉर्ड को पुनः प्राप्त Solr ।
ऐसा करने के लिए, पूर्ण-आयात चुनें , और स्वच्छ और प्रतिबद्ध विकल्पों की जाँच करें । अब Execute पर क्लिक करें दिखाए अनुसार ।
वैकल्पिक रूप से, आप इस तरह एक प्रत्यक्ष पूर्ण-आयात क्वेरी का उपयोग कर सकते हैं ।
http://localhost:8983/solr/collection1/dataimport?command=full-import&commit=true
आपके द्वारा निष्पादित किए जाने के बाद , सोलर ने रिकॉर्ड्स को अनुक्रमित करना शुरू कर दिया है, अगर कोई त्रुटि थी, तो यह इंडेक्सिंग विफल कहेगा और आपको लॉगिंग पर वापस जाना होगा अनुभाग क्या चला गया है गलत है देखने के लिए।
यह मानते हुए कि इस कॉन्फ़िगरेशन में कोई त्रुटि नहीं है और यदि अनुक्रमण सफलतापूर्वक पूरा हो गया है।, आपको यह सूचना मिलेगी।
चरण 4: सोलर क्वेरी चलाना
ऐसा लगता है कि सब कुछ ठीक हो गया है, अब आप Solr Queries का उपयोग उस डेटा को क्वेरी करने के लिए कर सकते हैं जो अनुक्रमित था। बाईं ओर स्थित क्वेरी पर क्लिक करें और फिर निष्पादित करें दबाएं नीचे बटन ।
आप दिखाए गए अनुसार अनुक्रमित रिकॉर्ड देखेंगे।
सभी रिकॉर्ड को सूचीबद्ध करने के लिए संबंधित सोलर क्वेरी है
http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true
खैर, वहाँ सभी 10 अनुक्रमित रिकॉर्ड चला जाता है। कहो, हमें केवल Ja से शुरू होने वाले नामों की आवश्यकता है , इस मामले में, आपको स्तंभ नाम को लक्षित करने की आवश्यकता है solr_name
, इसलिए आपकी क्वेरी इस तरह से जाती है।
http://localhost:8983/solr/collection1/select?q=solr_name:Ja*&wt=json&indent=true
इसी तरह से आप Solr Queries लिखते हैं । इसके बारे में अधिक पढ़ने के लिए, इस सुंदर लेख को देखें ।