2012-07-28 20 views
6

पर एकीकृत करना मैं अपने MySQL सर्वर के लिए स्फिंक्स पूर्ण-पाठ खोज क्षमता का उपयोग करने का प्रयास कर रहा हूं। मैं सेटअप एक स्थानीय स्फिंक्स सेवा स्थापना के मैनुअल और पाठ्य की खोज करने में सक्षम पर आधारित है।स्फिंक्स को MySQL

मैं

mysql.exe --host=127.0.0.1 port=9306 

से जुड़ सकते हैं कहाँ बंदरगाह 9306 बंदरगाह sphinx.conf में विन्यस्त है:

searchd { 
... 
listen = 9306:mysql41 
... 
} 

और SphinxQL प्रश्नों से करते हैं। मैं रिलीज पैकेज के साथ भेजे गए डिफ़ॉल्ट स्फिंक्स उदाहरण डेटाबेस का उपयोग कर रहा हूं।

हालांकि मैं अपने MySQL सर्वर के साथ एकीकृत करने के लिए स्फिंक्स, ऐसा है कि सभी ग्राहकों मेरी एसक्यूएल सर्वर से कनेक्ट SphinxQL कर सकते हैं चाहता हूँ और मैं MySQL नमूना डेटाबेस के साथ इसे बाहर की कोशिश करना चाहते sakila

  • क्या हैं इसे प्राप्त करने के लिए कदम?
  • मैं InnoDB से डेटाबेस इंजन स्फिंक्स में बदलने की जरूरत है?
  • इसके अलावा, ऐसा लगता है कि, स्पिंक्स केवल एक (1) डेटाबेस प्रति कॉन्फ़िगरेशन तालिका को सूचीबद्ध कर सकता है, मैं कैसे सुनिश्चित कर सकता हूं कि में सभी तालिकाएं अनुक्रमित हो जाती हैं?

उत्तर

12

हालांकि मैं अपने MySQL सर्वर के साथ एकीकृत करने के लिए स्फिंक्स, सभी ग्राहकों मेरी एसक्यूएल सर्वर से कनेक्ट SphinxQL

कर ऐसा नहीं कर सकते कर सकते हैं ऐसी है कि चाहते हैं। स्फिंक्स (sphinxQL के लिए सक्षम होने पर) आपको केवल एक सर्वर देता है जो एक mysql की तरह दिखता है - यानी यह एक ही संचार प्रोटोकॉल का उपयोग करता है - मुख्य रूप से केवल sphinx के लिए एक नया बनाने के बजाय, MySQL क्लाइंट लाइब्रेरी का पुन: उपयोग कर सकता है।

वे अलग-अलग 'सर्वर' हैं। MySQL कमांड चलाने के लिए आप एक MySQL सर्वर से कनेक्ट होते हैं; sphinxQL कमांड चलाने के लिए आप स्फिंक्स सर्वर से कनेक्ट होते हैं।

एप्लिकेशन woudl को प्रत्येक 'सर्वर' से अलग से कनेक्ट करना होगा। जरा कल्पना स्फिंक्स postgres की तरह कुछ था, तो आप स्पष्ट रूप से न mysql से कनेक्ट और PostgreSQL चलाने के लिए सक्षम होने की उम्मीद।

हालांकि स्पिंक्सएएस है - जो एक नकली MySQL स्टोरेज इंजन है। आप इसे mysql में स्थापित करते हैं, और आप तो इस इंजन का उपयोग कर एक टेबल बना सकते हैं। तो फिर तुम इस तालिका के खिलाफ mysql क्वेरी चला, हुड के नीचे संपर्क कर रहे हैं एक चल स्फिंक्स-सर्वर। तो यह एक तालिका डेटा होता है की तरह लग रहा MySQL के लिए, यह सबसे अधिक उपयोगी है क्योंकि कर सकते हैं तो यह खोज तालिका मूल डेटा तालिका के साथ एक mysql क्वेरी में परिणाम और मूल डेटा प्राप्त करने के लिए 'में शामिल होने' है।

एप्लिकेशन को तब स्फिंक्स से कनेक्ट करने की आवश्यकता नहीं है। स्फिंक्स यह आपके लिए करता है।

http://sphinxsearch.com/docs/current.html#sphinxse

मैं InnoDB से डेटाबेस इंजन स्फिंक्स में बदलने की जरूरत है?

सं।आप जो भी इंजन चाहते हैं उसका उपयोग करके, आप मूल डेटा को कहां रखते हैं। स्फिंक्स सिर्फ 'इंडेक्स' प्रदान करता है - यह मूल डेटा * स्टोर नहीं करता है। यह डेटाबेस नहीं है, बस इसकी अत्यधिक अनुकूलित अनुक्रमण के साथ तेजी से quering प्रदान करता है।

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

इसके अलावा, से यह क्या लगता है स्फिंक्स कर सकते हैं केवल एक (1) विन्यास प्रति डेटाबेस तालिका,

नंबर एक एकल स्फिंक्स उदाहरण कई अनुक्रमित होस्ट कर सकते हैं सूचकांक। और एक सूचकांक में कई स्रोत हो सकते हैं। तो बस प्रति टेबल एक सूचकांक बना सकते हैं। या यदि आप मुख्य रूप से उन्हें एक साथ खोजना चाहते हैं, तो बस एक समेकित अनुक्रमणिका बना सकते हैं।

- ** टिप्पणी में सवाल करने के लिए जवाब देने के लिए संपादित करें: **

जब आप कहते हैं कि, स्फिंक्स कई अनुक्रमित होस्ट कर सकते हैं, यह sphinx.conf विन्यास फाइल में पूरी तरह से निर्भर है?

आप शायद प्रति तालिका एक स्फिंक्स इंडेक्स को परिभाषित करेंगे। तो आपको प्रत्येक तालिका के लिए एक स्रोत/अनुक्रमणिका जोड़ी की आवश्यकता होगी। (जब तक आप सूचकांक करने के लिए एक सूचकांक में सभी तालिकाओं चाहता था, whihch भी संभव है।

यह टेबल ही पढ़ नहीं कर सकते, और कॉन्फ़िग फ़ाइल बनानी, आपको प्रत्येक सूचकांक को परिभाषित करने के लिए है।

जब आप कहते हैं कि "यदि आप एक सर्वर है कि एक mysql एक तरह लग रहा है देता है" आप

नंबर नहीं एक प्रॉक्सी जहाँ मेरे MySQL ग्राहक इस स्फिंक्स पोर्ट से कनेक्ट कर सकते हैं एक प्रॉक्सी की तरह मतलब है,।

एक डी क्लाइंट को लगता है कि यह एक MySQL सर्वर है?

असल में हाँ। क्लाइंट इसे उसी तरह से कनेक्ट करेगा जैसा कि यह एक mysql-server से कनेक्ट होता है।

यदि ऐसा है, तो मैं उसी कनेक्शन पर MySQL SQL क्वेरी और SphinxQL दोनों निष्पादित कर सकता हूं?

नहीं असंभव। Mysql क्वेरी को चलाने के लिए mysql-server से कनेक्ट करें। SphinxQL क्वेरी चलाने के लिए searchd से कनेक्ट करें।

दो कनेक्शन, प्रति सर्वर एक।

क्यों मेरे MySQL Workbench पोर्ट 9306 से कनेक्ट नहीं कर सकते हैं,

पता नहीं है। फ़ायरवॉल मुद्दा हो सकता है।

+0

जब आप कहते हैं कि, स्फिंक्स कई इंडेक्स होस्ट कर सकता है, तो क्या यह पूरी तरह से sphinx.conf कॉन्फ़िगरेशन फ़ाइल में निर्भर है? दरअसल मुझे अपने प्रश्न को फिर से लिखना होगा, मेरा सवाल एक डीबी में सभी टेबलों को इंडेक्स कर सकता है, यदि हां, तो कॉन्फ़िगरेशन फ़ाइल में क्या संशोधित करना चाहिए? – xybrek

+0

जब आप कहते हैं "आपको एक सर्वर देता है जो एक MySQL एक जैसा दिखता है" क्या आपका मतलब प्रॉक्सी जैसा है, जहां मेरा MySQL क्लाइंट इस स्फिंक्स पोर्ट से कनेक्ट हो सकता है और क्लाइंट को लगता है कि यह एक MySQL सर्वर है? यदि ऐसा है, तो मैं एक ही कनेक्शन पर MySQL SQL क्वेरी और SphinxQL दोनों निष्पादित कर सकता हूं? यदि ऐसा भी है, तो मेरा MySQL वर्कबेंच पोर्ट 9306 से कनेक्ट नहीं हो सकता है, जब यह पोर्ट 3306 (डिफ़ॉल्ट MySQL पोर्ट) से कनेक्ट हो सकता है? – xybrek

+0

उत्तर के एक संपादन में अतिरिक्त प्रश्नों के उत्तर दिए ... – barryhunter