SOLR मूल रूप से एक Apache Tomcat कंटेनर है जो Apache Lucene इंडेक्स को क्वेरी करने के लिए REST इंटरफ़ेस लागू करता है। हां, आपको अपने वेब सर्वर पर जावा एप्लिकेशन चलाने में सक्षम होना चाहिए। यह आपके लिए अपने होस्टिंग प्रदाता के साथ काम करने के लिए एक मुद्दा है।
आपके वेब ऐप का उपयोग करने वाले ग्राहकों को जावा चलाने की आवश्यकता नहीं है। आपका PHP ऐप SOLR सेवा के लिए एक REST क्वेरी बना सकता है और परिणामों को HTML में प्रारूपित कर सकता है। क्लाइंट केवल HTML आउटपुट देखता है; इसे कभी भी यह जानने की आवश्यकता नहीं है कि डेटा जावा में लागू की गई सेवा से आया है।
Zend_Search_Lucene
एक शुद्ध-PHP कार्यान्वयन है जिसे अपाचे ल्यूसीन के समान काम करना चाहिए। Zend समाधान एक समान अनुक्रमणिका फ़ाइल स्वरूप का भी उपयोग करता है। इसलिए भंडारण के लिहाज से वे बराबर होने चाहिए।
मैंने StackOverflow डेटा डंप (अक्टूबर 2009) को इंडेक्स करने के लिए Java Lucene का इस्तेमाल किया। मैंने लगभग 1 गीगा टेक्स्ट डेटा सहित 1.5 मिलियन पंक्तियों को अनुक्रमित किया। लुसीन इंडेक्स 1323 एमबी था, जबकि उसी डेटा का MySQL FULLTEXT इंडेक्स केवल 466 एमबी था।
SQL का उपयोग करना LIKE
किसी भी पूर्ण पाठ अनुक्रमण समाधान के स्थान पर विधेय को निश्चित रूप से किसी स्थान की आवश्यकता नहीं है, क्योंकि यह वैसे भी किसी पारंपरिक अनुक्रमणिका का उपयोग नहीं कर सकता है। लेकिन मेरे परीक्षणों में LIKE
. का उपयोग करके जावा ल्यूसीन की तुलना में लगभग 200 गुना धीमा था, जो बदले में उसी डेटा पर MySQL FULLTEXT इंडेक्स की तुलना में लगभग 40% धीमा था।
MySQL के साथ फुलटेक्स्ट इंडेक्सिंग समाधानों के बारे में मेरी हालिया प्रस्तुति देखें:
http://www.slideshare.net/billkarwin /व्यावहारिक-पूर्ण-पाठ-खोज-के साथ-my-sql
यह आश्चर्य की बात नहीं है कि यह जावा ल्यूसीन तकनीक के प्रदर्शन और मापनीयता से मेल नहीं खा सकता है। भाषा के रूप में PHP का लाभ विकास दक्षता में वृद्धि कर रहा है, रनटाइम दक्षता नहीं।
अपडेट करें: मैंने अभी Zend_Search_Lucene
. का उपयोग करके एक अनुक्रमणिका बनाने का प्रयास किया है . जावा ल्यूसीन तकनीक की तुलना में PHP के साथ एक इंडेक्स बनाना बहुत धीमा है, इसलिए मैंने केवल 10,000 दस्तावेज़ों को अनुक्रमित किया। इसमें लगभग 15 मिनट का समय लगा, जिससे पूरे संग्रह को अनुक्रमित करने में लगभग 36 घंटे लगेंगे। इसकी तुलना Java Lucene से करें, जिसने मेरे परीक्षण में 7 मिनट से कम समय में 1.5 मिलियन दस्तावेज़ों के पूरे संग्रह को अनुक्रमित किया।
मैंने Zend_Search_Lucene
with के साथ बनाई गई अनुक्रमणिका का आकार 8.75 एमबी है। इस 150x का विस्तार करते हुए, मेरा अनुमान है कि पूर्ण सूचकांक 1312.5 एमबी होगा। इसलिए मैं यह निष्कर्ष निकालता हूं कि Zend_Search_Lucene
जावा ल्यूसीन द्वारा निर्मित सूचकांक के समान आकार का एक सूचकांक बनाता है। यह अपेक्षा के अनुरूप है।