यह एक सामान्य प्रश्न है और यह गलतफहमी है कि Sphinx और Manticore दोनों को MySQL डेटाबेस की आवश्यकता होती है। यह सच नहीं है और इस लेख में हम इस बारे में बात करेंगे कि खोज इंजन को MySQL के स्वतंत्र रूप से कैसे उपयोग किया जा सकता है।
हालांकि अधिकांश उपयोगकर्ता MySQL डेटाबेस (या इसके वेरिएंट जैसे MariaDB/Percona Server) का उपयोग कर रहे हैं और Sphinx का लक्ष्य MySQL उपयोगकर्ताओं की ओर था - क्योंकि एक db प्लगइन (SphinxSE) लागू किया गया था और साथ ही एक क्वेरी प्रोटोकॉल mysql-आधारित है, यह सॉफ़्टवेयर MySQL के लिए एक समर्पित समाधान नहीं है, बल्कि एक सामान्य उद्देश्य खोज उपकरण है।
Sphinx और Manticore को संकलित करने के लिए किसी MySQL पुस्तकालय की आवश्यकता नहीं है (या कभी थी)। mysql lib क्लाइंट केवल इंडेक्सर के mysql ड्राइवर के लिए आवश्यक है। हालांकि इसके बिना भी, आप ODBC ड्राइवर का उपयोग करके MySQL डेटाबेस से डेटा इंडेक्स कर सकते हैं। SphinxQL के लिए MySQL प्रोटोकॉल स्वदेशी लागू किया गया है और इसके लिए MySQL हेडर या पुस्तकालयों की आवश्यकता नहीं है।
इंडेक्सिंग
Manticore कई ड्राइवर लागू करता है जो एक डेटाबेस से डेटा प्राप्त कर सकते हैं। MySQL, MSSQL और PostgreSQL के लिए विशिष्ट डेटाबेस ड्राइवर उपलब्ध हैं और ODBC के लिए भी समर्थन उपलब्ध है। MySQL और PostgreSQL ड्राइवर अपनी संबंधित क्लाइंट लाइब्रेरी की आवश्यकता करते हैं। MSSQL ड्राइवर ODBC क्लाइंट लाइब्रेरी की आवश्यकता करता है। हालाँकि Manticore कुछ इनमें से कुछ ड्राइवरों का समर्थन किए बिना या बिल्कुल भी समर्थन किए बिना बनाया जा सकता है।
डेटाबेस ड्राइवरों के अलावा XML पाइप और CSV/TSV ड्राइवरों द्वारा और भी सामान्य डेटा स्रोत ड्राइवर उपलब्ध हैं। इनसे, डेटा एक गैर-संबंधित वेयरहाउस जैसे NoSQL या बस साधारण फ़ाइल भंडारण से लिया जा सकता है। XML ड्राइवर को विशिष्ट प्रारूप में XML फ़ाइल(फाइलों) की आवश्यकता होती है। CSV/TSV के मामले में, केवल आवश्यकता यह है कि पहली कॉलम दस्तावेज़ ID हो। इन ड्राइवरों के मामले में, Manticore को फ़ाइल के लिए पूर्ण पथ की आवश्यकता नहीं है, बल्कि एक फ़ाइल को निष्पादित करता है और अपेक्षा करता है कि प्रतिक्रिया XML/CSV/TSV फ़ाइल हो। इसका उपयोग कई फ़ाइलों या पूरी फ़ोल्डरों को संसाधित करने के लिए किया जा सकता है जो फ़ाइलें शामिल करते हैं।
खोज
पहला API लागू SphinxAPI था, जो एक कस्टम बाइनरी प्रोटोकॉल था जिसके लिए कई प्रोग्रामिंग भाषाओं में आधिकारिक रूप से क्लाइंट लाइब्रेरी विकसित की गई और तीसरे पक्ष ने अन्य भाषाओं में क्लाइंट लाइब्रेरी पोर्ट की। हालांकि इसमें सभी सुविधाएँ नहीं हैं, SphinxAPI प्रोटोकॉल खोज के लिए पूर्ण कार्यान्वयन प्रदान करता है। SphinxAPI प्रोटोकॉल (जो आंतरिक रूप से वितरित सूचकांकों द्वारा भी उपयोग किया जाता है) के साथ समस्या यह है कि क्लाइंट लाइब्रेरी को अद्यतित रखना है। SphinxQL प्रोटोकॉल अधिक लोकप्रिय हो गया क्योंकि अधिकांश उपयोगकर्ता mysql क्लाइंट/कनेक्टर का उपयोग करने में ठीक थे और डैमन अपग्रेड के बीच किसी रखरखाव की आवश्यकता नहीं थी - इसके विपरीत SphinxAPI को नए लागू किए गए सुविधाओं तक पहुँचने के लिए इसे अद्यतित रखना आवश्यक होता। SphinxAPI क्लाइंट को PHP, Python, Java और Ruby जैसी कई लोकप्रिय भाषाओं में आधिकारिक रूप से लागू किया गया था, लेकिन अन्य भाषाओं के लिए 3rd पार्टी पोर्ट भी मौजूद हैं।
Sphinx 2.3 से HTTP प्रोटोकॉल जोड़ा गया, लेकिन यह केवल SQL या SphinxAPI प्रारूप में खोजों के लिए एक प्रॉक्सी के रूप में काम करता था। इसे Manticore में नए एंडपॉइंट्स के साथ बेहतर बनाया गया जो अनुरोधों और प्रतिक्रियाओं दोनों के लिए JSON का उपयोग करते हैं। यह एक नियमित वेब सेवा की तरह काम करता है, प्रतिक्रियाएँ प्रॉक्सी या रिवर्स प्रॉक्सी सर्वर (उदाहरण के लिए nginx) के साथ कैश की जा सकती हैं। वर्तमान में JSON API खोजने, डेटा हेरफेर और पर्कोलेशन के लिए पथ प्रदान करता है और भविष्य में अधिक कमांड लागू होने की उम्मीद है।