इस लेख में, हम सीखेंगे कि कैसे Ubunt 16.04 पर Sphinx को स्थापित और सेटअप किया जाए, Sphinx एक खुला स्रोत खोज इंजन है जो पूर्ण परीक्षण खोजों की अनुमति देता है, और एक विशाल डेटा के साथ खोजों को बहुत प्रभावी ढंग से निष्पादित करने में सबसे अच्छा है जहां से डेटा हो सकता है कोई भी स्रोत, (उदा - SQL डेटाबेस, सादा पाठ फ़ाइलें, आदि)
स्फिंक्स की विशेषताएं
-
उन्नत अनुक्रमणिका और पूछताछ के लिए अच्छा उपकरण।
-
उच्च खोज प्रदर्शन और अनुक्रमणिका।
-
पोस्ट-प्रोसेसिंग के लिए अग्रिम परिणाम।
-
उन्नत खोजों के साथ आसानी से मापनीय।
-
SQL और XML स्रोतों के साथ एकीकृत किया जा सकता है।
-
1000 प्रश्नों के साथ विशाल डेटा सौंपने के लिए स्केलेबल हो सकता है।
आवश्यकताएं
शुरू करने से पहले हमें कुछ पूर्वापेक्षाएँ चाहिए थीं।
-
हमें मशीन पर सूडो अनुमति के साथ एक गैर-रूट उपयोगकर्ता के साथ एक उबंटू मशीन की आवश्यकता थी।
-
MySQL मशीन पर स्थापित है।
मशीन पर स्फिंक्स इंस्टॉल करना
हम उपयुक्त-गेट का उपयोग करके उबंटू के मूल पैकेज रिपॉजिटरी का उपयोग करके सीधे स्फिंक्स को स्थापित कर सकते हैं, नीचे स्फिंक्स को स्थापित करने का आदेश दिया गया है।
$ sudo apt-get sphinxsearchपठन पैकेज सूचियां स्थापित करें... हो गया निर्भरता वृक्ष का निर्माण राज्य की जानकारी पढ़ना... हो गयानिम्न अतिरिक्त पैकेज स्थापित किए जाएंगे:libmysqlclient20 libstemmer0dनिम्नलिखित नए पैकेज स्थापित किए जाएंगे:libmysqlclient20 libstemmer0d sphinxsearch0 अपग्रेड किया गया, 3 नए इंस्टॉल किए गए, 0 हटाने के लिए और 92 को अपग्रेड नहीं किया गया। 2,608 kB संग्रह प्राप्त करने की आवश्यकता है। इस ऑपरेशन के बाद, 20.5 MB अतिरिक्त डिस्क स्थान का उपयोग किया जाएगा। क्या आप जारी रखना चाहते हैं? [वाई/एन] वाईगेट:1 https://in.archive.ubuntu.com/ubuntuxenial/universe amd64 libstemmer0d amd 64 0+svn585-1 [62.1 kB]प्राप्त करें:2 https://in.archive.ubuntu.com /ubuntuxenial-updates/main amd64 libmysqlclie nt20 amd64 5.7.15-0ubuntu0.16.04.1 [809 kB]प्राप्त करें:3 https://in.archive.ubuntu.com/ubuntu xenial/universe amd64 sphinxsearch amd 64 2.2.9- 1build1 [1,737 kB] 2s में 2,608 kB प्राप्त किया (986 kB/s) पहले से अचयनित पैकेज का चयन करना libstemmer0d:amd64। (डेटाबेस पढ़ना ... 117542 फ़ाइलें और निर्देशिकाएं वर्तमान में स्थापित हैं।) अनपैक करने की तैयारी .../libstemmer0d_0+svn585-1_amd64 .deb ... libstemmer0d को खोलना:amd64 (0+svn585-1) ... पहले अचयनित पैकेज का चयन करना libmysqlclient20:amd64. अनपैक करने की तैयारी .../libmysqlclient20_5.7.15-0ubuntu0.16.04.1_amd64.deb ... libmysqlclient20 को अनपैक करना :amd64 (5.7.15-0ubuntu0.16.04.1) ... पहले अचयनित पैकेज sphinxsearch का चयन करना। अनपैक करने की तैयारी .../sphinxsearch_2.2.9-1build1_amd64.deb ... sphinxsearch को अनपैक करना (2.2.9-1build1) .. .lib के लिए ट्रिगर्स को संसाधित करना c-बिन (2.23-0ubuntu3) ... यूरेडाहेड (0.100.0-19) के लिए ट्रिगर्स को प्रोसेस करना ... सिस्टमड (229-4ubuntu4) के लिए ट्रिगर्स को प्रोसेस करना ... libstemmer0d:amd64 (0+svn585-1) सेट करना। ..libmysqlclient20:amd64 (5.7.15-0ubuntu0.16.04.1) की स्थापना ...स्फिंक्सखोज सेट करना (2.2.9-1build1) ...सिस्टम उपयोगकर्ता `sphinxsearch' (यूआईडी 119) जोड़ना ...नया समूह जोड़ना `sphinxsearch' (GID 125) ... 'sphinxsearch' समूह के साथ नया उपयोगकर्ता `sphinxsearch' (UID 119) जोड़ना ... होम निर्देशिका नहीं बनाना `/var/run/sphinxsearch'। libc-bin के लिए ट्रिगर्स को संसाधित करना (2.23- 0ubuntu3) ... ureadahead (0.100.0-19) के लिए ट्रिगर्स को प्रोसेस करना ... सिस्टमड (229-4ubuntu4) के लिए ट्रिगर्स को प्रोसेस करना ...
स्फिंक्स के लिए एक परीक्षण डेटाबेस बनाना
अब हमें नमूना डेटा का उपयोग करके एक परीक्षण डेटाबेस बनाना होगा जो डिफ़ॉल्ट रूप से पैकेज के साथ आता है जो आपको बाद के चरणों में स्फिंक्स खोज का परीक्षण करने की अनुमति देगा।
आइए हम MySQL में लॉगिन करें जहां हम परीक्षण डेटाबेस बनाएंगे और नमूना डेटाबेस आयात करेंगे।
$ mysql -u root -pmysql> डेटाबेस टेस्ट बनाएं;क्वेरी ओके, 1 पंक्ति प्रभावित (0.01 सेकंड)mysql> SOURCE /etc/sphinxsearch/example.sql;क्वेरी ओके, 0 पंक्तियाँ प्रभावित, 1 चेतावनी (0.01 सेकंड) क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.03 सेकंड) क्वेरी ठीक, 4 पंक्तियाँ प्रभावित (0.01 सेकंड) रिकॉर्ड:4 डुप्लिकेट:0 चेतावनियाँ:0 क्वेरी ठीक, 0 पंक्तियाँ प्रभावित, 1 चेतावनी (0.00 सेकंड) क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) )क्वेरी ठीक है, 10 पंक्तियाँ प्रभावित हुई हैं (0.01 सेकंड)रिकॉर्ड:10 डुप्लिकेट:0 चेतावनियाँ:0Mysql> छोड़ें
खोज के लिए स्फिंक्स को कॉन्फ़िगर करना
स्फिंक्स में, हमें अपने वातावरण के अनुरूप 3 मुख्य ब्लॉकों को संपादित और कॉन्फ़िगर करने की आवश्यकता है जहां इंडेक्स, खोज और स्रोत जैसे आवश्यक परिभाषित किए गए हैं, ये कॉन्फ़िगरेशन फ़ाइल sphinx.conf में पाए जाते हैं, जो /etc/sphinxsearch/sphinx पर स्थित है। conf.sample फ़ाइल के लिए हमें मौजूदा नमूना कॉन्फ़िगरेशन फ़ाइल को /etc/sphinxsearch फ़ोल्डर में कॉपी करने की आवश्यकता है
$ cp /etc/sphinxsearch/sphinx.conf.sample /etc/sphinxsearch/sphinx.conf$ sudo vi /etc/sphoxsearch/sphinx.conf
कॉन्फ़िगरेशन फ़ाइल नीचे ब्लॉक के साथ दिखनी चाहिए
sphinx.conf में स्रोत ब्लॉक
<पूर्व>स्रोत src1{ प्रकार =mysql #SQL सेटिंग्स ('mysql' और 'pgsql' प्रकारों के लिए) sql_host =localhost sql_user =roo tsql_pass =ubuntu sql_db =परीक्षण sql_port =3306 # वैकल्पिक, डिफ़ॉल्ट 3306 sql_query =\ चयन आईडी है group_id, UNIX_TIMESTAMP(date_added) AS date_added, शीर्षक, सामग्री \ दस्तावेज़ों से sql_attr_uint =group_id sql_attr_timestamp =date_added}sphinx.conf में इंडेक्स ब्लॉक
<पूर्व>सूचकांक परीक्षण{ स्रोत =src1 पथ =/var/lib/sphinxsearch/डेटा/परीक्षण docinfo =बाहरी}sphinx.confsearchd में खोज ब्लॉक {सुनो =9312:sphinx #SphinxAPI पोर्ट सुनो =9306:mysql41 #SphinxQL पोर्ट लॉग =/var/log/sphinxsearch/searchd.log query_log =/var/log/sphinxsearch/testquery.log read_timeout =5 max_children =30 pid_file =/var/run/sphinxsearch/testsearchd.pid सीमलेस_रोटेट =1 preopen_indexes =1 unlink_old =1 binlog_path =/var/lib/sphinxsearch/datatest}एक बार, हम स्फिंक्स को अनुक्रमित करने के लिए आवश्यक कॉन्फ़िगरेशन को संपादित करते हैं।
स्फिंक्स पर अनुक्रमणिका प्रबंधित करना
यहां, हम उन कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके अनुक्रमित करेंगे जिन्हें हमने पहले के चरणों में संपादित किया था
$ sudo indexer -allSphinx 2.2.9-id64-release (rel22-r5006)कॉपीराइट (c) 2001-2015, एंड्रयू अक्स्योनऑफकॉपीराइट (c) 2008-2015, Sphinx Technologies Inc (https://sphinxsearch.com)का उपयोग करके कॉन्फिग फाइल '/etc/sphinxsearch/sphinx.conf'... इंडेक्सिंग इंडेक्स 'टेस्ट'... एकत्रित 4 डॉक्स, 0.0 एमबी सॉर्ट किए गए 0.0 एमहिट्स, 100.0% कुल 4 डॉक्स, 193 बाइट्सकुल 0.007 सेकेंड, 24319 बाइट्स/सेकंड, 504.03 डॉक्स /सेक्टोटल 4 पढ़ता है, 0.000 सेकंड, 0.1 kb/कॉल औसत, 0.0 मिसे/कॉल औसत कुल 12 लिखता है, 0.000 सेकंड, 0.1 kb/कॉल औसत, 0.0 मिसे/कॉल औसत
उत्पादन के माहौल में, हमें इंडेक्स को अप टू डेट रखने की जरूरत है ताकि हम इसके लिए एक क्रोनजॉब तैयार कर सकें -
$ crontab -e
फ़ाइल के अंत में निम्नलिखित जोड़ें।
# क्रॉन द्वारा चलाए जाने वाले कार्यों को पेश करने के लिए इस फाइल को संपादित करें। ## समय को परिभाषित करने के लिए आप # मिनट (एम), घंटा (एच), महीने का दिन (डोम), महीना (सोम), # और सप्ताह के दिन (डॉव) के लिए ठोस मान प्रदान कर सकते हैं या इनमें '*' का उपयोग कर सकते हैं फ़ील्ड ('किसी भी' के लिए)।## ध्यान दें कि कार्य क्रोन के सिस्टम के आधार पर शुरू किए जाएंगे# डेमॉन की समय और समय क्षेत्र की धारणा। फ़ाइल संबंधित है (जब तक कि पुनर्निर्देशित न हो)। /## अधिक जानकारी के लिए crontab(5) और cron(8)## m h dom mon dow command@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf - के मैनुअल पेज देखें। सभी
स्फिंक्स सेवाएं प्रारंभ करना
चूंकि हमने कॉन्फ़िगरेशन फ़ाइल का उपयोग करके अनुक्रमणिका को कॉन्फ़िगर किया है, अब हमें Sphinx कॉन्फ़िगरेशन फ़ाइल को संपादित करने की आवश्यकता है, डिफ़ॉल्ट रूप से Sphinx डेमॉन प्रारंभ नहीं हुआ है, हमें इस /etc/default/sphinxsearch
में फ़ाइल को संपादित करने की आवश्यकता है।$ vi /etc/default/sphinxsearch## sphinxsearch searchd daemon के लिए सेटिंग्स# विवरण के लिए कृपया /usr/share/doc/sphinxsearch/README.Debian पढ़ें।## क्या sphinxsearch स्टार्टअप पर स्वचालित रूप से चलना चाहिए? (डिफ़ॉल्ट:नहीं)# ऐसा करने से पहले आप /etc/sphinxsearch/sphinx.conf# को संशोधित करना चाहेंगे ताकि यह आपके लिए काम करे।START=हां
स्फिंक्स डेमॉन को तारांकित करने का आदेश नीचे दिया गया है
$ sudo systemctl sphinxsearch.services को पुनरारंभ करें
एक बार जब हम स्फिंक्स खोज सेवाओं को पुनः आरंभ करते हैं तो हम नीचे दिए गए आदेश का उपयोग करके स्थिति की जांच करेंगे
$ sudo systemctl status sphinxsearch.servicesphinxsearch.service - LSB:फास्ट स्टैंडअलोन फुल-टेक्स्ट SQL सर्च इंजनलोडेड:लोडेड (/etc/init.d/sphinxsearch; खराब; विक्रेता प्रीसेट:सक्षम) सक्रिय:सोम से सक्रिय (बाहर) 2016-09-19 13:00:20 IST; 1h 10मिनट पहलेडॉक्स:man:systemd-sysv-generator(8)कार्य:0 (सीमा:512)मेमोरी:0BCPU:0सितंबर 19 13:00:20 ubuntu-16 systemd[1]:LSB प्रारंभ करना:तेज़ स्टैंडअलोन पूर्ण-पाठ SQL खोज इंजन... 19 सितंबर 13:00:20 उबंटू-16 स्फिंक्स खोज [7804]:स्फिंक्स खोज को सक्षम करने के लिए, /etc/default/sphinxsearch संपादित करें और START=ye19 सितंबर 13:00:20 ubuntu-16 systemd[1] सेट करें:LSB प्रारंभ किया गया:तेज़ स्टैंडअलोन पूर्ण-पाठ SQL खोज इंजन।
स्फिंक्स खोज का परीक्षण करना
अब हम MySQL इंटरफ़ेस का उपयोग करके पोर्ट 9306 का उपयोग करके SphinxQL से कनेक्ट करेंगे।
$ mysql -h0 -P9306MySQL मॉनिटर में आपका स्वागत है। कमांड के साथ समाप्त होता है; या \g.आपका MySQL कनेक्शन आईडी 1सर्वर संस्करण है:2.2.9-id64-रिलीज़ (rel22-r5006)कॉपीराइट (c) 2000, 2016, Oracle और/या इसके सहयोगी। सर्वाधिकार सुरक्षित।Oracle Oracle Corporation और/या उसके सहयोगियों का एक पंजीकृत ट्रेडमार्क है। अन्य नाम उनके संबंधित स्वामियों के ट्रेडमार्क हो सकते हैं। 'सहायता' टाइप करें। या '\h' मदद के लिए। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।mysql>
डेटाबेस में "परीक्षण" शब्द खोजें
mysql> सेलेक्ट करें * टेस्ट से जहां मैच ('टेस्ट'); मेटा दिखाएँ;+----------+----------+---------------+| आईडी | group_id | date_added |+------+----------+---------------+| 1 | 1 | 1474272578 || 2 | 1 | 1474272578 || 4 | 2 | 1474272578 |+------+----------+---------------+3 पंक्तियाँ सेट में (0.00 सेकंड)+------- --------+----------+| चर_नाम | मूल्य |+---------------+----------+| कुल | 3 || टोटल_फाउंड | 3 || समय | 0.000 || कीवर्ड [0] | परीक्षण || डॉक्स[0] | 3 || हिट[0] | 5 |+---------------+----------+6 पंक्तियों में सेट (0.00 सेकंड)<ब्लॉकक्वॉट>
सेटअप और कॉन्फ़िगरेशन का उपयोग करके, हम स्फिंक्स को एक शक्तिशाली खोज इंजन के रूप में कॉन्फ़िगर कर सकते हैं जो अधिक कुशल है और विशाल डेटा को संभाल सकता है, स्फिंक्स खोज अरबों दस्तावेज़ों को संभाल सकता है और डेटा के टेराबाइट्स को संभाल सकता है जहां प्रति हज़ार खोज क्वेरी निष्पादित की जा सकती हैं। दूसरा।