About me

नमस्ते, मैं माइक हूँ।
मैं हाल ही में Manticore में डेवलपर एडवोकेट के रूप में काम करना शुरू किया है। मैं आईटी से पूरी तरह दूर नहीं हूँ, लेकिन मैं आधुनिक तकनीकों के साथ अप-टू-डेट हो रहा हूँ। इस ब्लॉग में, मैं अपने अनुभव और Manticore के बारे में जो मैं सीखता हूँ, साझा करूंगा। मैं अपनी यात्रा को एक डायरी प्रारूप में दस्तावेजित करने की योजना बना रहा हूँ, यह बताने के लिए कि Manticore क्या है और इसका उपयोग कैसे करें। चलो देखें कि चीजें कैसे एक साथ काम करती हैं, मुद्दों की पहचान करें, और विकसित करने वालों के साथ वास्तविक समय में बातचीत करें।
यह मेरा पहला ब्लॉग पोस्ट है। यदि आप मेरे साथ Manticore के बारे में सीखने में रुचि रखते हैं, तो मैं आपको अपडेट रखूंगा:
A few words about Manticore
जैसे ही मैंने Manticore Search के बारे में सीखना शुरू किया, मैंने पाया कि यह एक शक्तिशाली ओपन-सोर्स डेटाबेस है। यह SQL और JSON दोनों का उपयोग करके तेज़ पूर्ण-टेक्स्ट खोज कर सकता है, और बहुत कुछ। इसे 2017 में बनाया गया था और तब से इसे बहुत परीक्षण और सुधार किया गया है। एक मजबूत समुदाय के कारण, कई बगों को ठीक किया गया है, और यह अब बहुत अच्छा काम करता है।
Manticore शब्दों, वाक्यांशों और वाक्यों को जल्दी से खोजने के लिए शानदार है, और इसमें कई अन्य उन्नत विशेषताएँ हैं। यह ऑनलाइन स्टोर और उद्यम खोज प्रणालियों जैसी चीजों के लिए इसे आदर्श बनाता है। कई सहायक विशेषताओं और समुदाय और Manticore सॉफ़्टवेयर की टीम से मिले समर्थन के साथ, यह देखना आसान है कि क्यों कई लोग अपनी खोज जरुरतों के लिए Manticore का चयन करते हैं।
इस लेख में, मैं आपको Manticore के साथ शुरुआत करने का तरीका दिखाऊंगा।
Where to start
Minimal environment
- इंटरनेट
- बहुत पुराना OS नहीं (Mac, Win या Lin - इसे कोई फर्क नहीं पड़ता)
- Docker या Docker Desktop।
- अपेक्षाकृत सीधे हाथ
- तेज डेटाबेस और पूर्ण-टेक्स्ट जानकारी के लिए उच्च गुणवत्ता वाले, उपयोग में आसान सॉफ़्टवेयर बनाने की मजबूत इच्छा।
Tools
- कंसोल (या आप कंटेनर से कनेक्ट करने के लिए Docker Desktop का उपयोग कर सकते हैं)
- फ़ाइल प्रबंधक (वैकल्पिक, मुझे Midnight Commander पसंद है)
- कंसोल के लिए टेक्स्ट संपादक (उदाहरण के लिए, mcedit, nano, vim)। उदाहरणों में, हम Midnight Commander में अंतर्निहित संपादक, mcedit का उपयोग करेंगे, जिससे vim के लिए बाहर निकलने के आदेश देखने की आवश्यकता नहीं पड़ेगी।
MC का उपयोग करते समय, आपको एक संपादक स्थापित करने की आवश्यकता नहीं है, क्योंकि अंतर्निहित वाला पर्याप्त है। यदि कोई अतिरिक्त संपादक स्थापित किया गया है, तो [F4 Edit] कमांड को आयोजित करने पर, MC आपको इच्छित एक का चयन करने के लिए प्रेरित करेगा। उदाहरण में अंतर्निहित MC संपादक का उपयोग किया जाएगा, जो इंटरफेस में एक फ़ाइल चुने जाने पर [F4] दबाकर या mcedit <फाइल नाम बनाने/खोलने के लिए> कमांड का उपयोग करके कॉल किया जाता है।
तेज़ तरीका यह है कि सब कुछ कमांड लाइन से किया जाए। मैं इसे जल्दी चाहता हूँ!
Infrastructure deployment
हम Docker कंटेनर में Manticore के साथ प्रयोग करेंगे, क्योंकि यह एक लोकप्रिय क्रॉस-प्लेटफ़ॉर्म समाधान है और इसे अक्सर उस वातावरण में उपयोग किया जाता है जहाँ Manticore की सबसे अधिक मांग होती है, हालांकि सभी लोकप्रिय ऑपरेटिंग सिस्टम के लिए डेटाबेस के संस्करण हैं।
जो पेशेवर पहले से ही डॉकर के साथ काम करना जानते हैं, वे इसे कंटेनर चालू होने तक छोड़ सकते हैं। खैर, नए और मैं शून्य से शुरू होने के चरणों के माध्यम से गुज़रेगा।
शुरू करने के लिए, आपको निम्नलिखित कदम उठाने होंगे:
- हमारी प्लेटफ़ॉर्म के लिए
https://www.docker.com/
वेबसाइट से Docker Desktop डाउनलोड करें:
- स्थापना के बाद, हमें आधिकारिक Manticore इमेज को प्राप्त करना है। ऐप के शीर्ष बार में, एक खोज बार है। उसमें बस “ManticoreSearch” टाइप करें।
- आउटपुट में, हमारे पास “manticoresearch/manticore” है।
- “pull” बटन पर क्लिक करें, फिर images टैब पर जाएँ।
- और फिर हम उस नए इमेज का चयन करते हैं जिसे हमने अभी डाउनलोड किया है और “play” पर क्लिक करते हैं।
पॉप-अप विंडो में, आपको कुछ अतिरिक्त सेटिंग्स दर्ज करनी हैं:
- कंटेनर का नाम:
manticore
। - पोर्ट्स के लिए, सरलता के लिए हम डेटाबेस के समान पोर्ट का उपयोग करेंगे, जो
9306
है। - पर्यावरणीय चर में, चर
EXTRA
को मान1
के साथ सेट करें। यह उन सहायक घटकों को चलाने के लिए आवश्यक है जो बहुत उपयोगी हैं। इसके बारे में अधिक जानें यहाँ ।
और फिर “Run” पर क्लिक करें।
अब, कंटेनर टैब पर वापस जाएँ। हम सक्रिय कंटेनरों की सूची में अपने कंटेनर को पाएंगे। ड्रॉपडाउन मेनू में, “Open in terminal” विकल्प है। एक विंडो पॉप अप होगी जिसमें एक टर्मिनल होगा जो सीधे आपके कंटेनर से जुड़ा होगा।
बधाई हो, आपने अपने कंप्यूटर पर Manticore Search docker इमेज सफलतापूर्वक स्थापित कर ली है।
Docker Desktop इंटरफ़ेस के साथ थोड़ी देर तक छेड़छाड़ करने के बाद, आप समझते हैं कि चीजें करने का सबसे तेज़ तरीका कमांड लाइन के माध्यम से है।docker run --name manticore -p 9306:9306 -d manticoresearch/manticore
docker exec -it manticore /bin/sh
- चीजों को आसान बनाने के लिए, हम कंटेनर के अंदर Midnight Commander फ़ाइल प्रबंधक स्थापित करेंगे:
apt update
apt install mc
mc
So, हमने “apt” पैकेज प्रबंधक को अपडेट किया, फिर हमने “mc” फ़ाइल प्रबंधक को स्थापित किया और उसे शुरू किया।
अब, आपका टर्मिनल ऐसा दिखना चाहिए:
पहला कदम। पहला तालिका।
ठीक है, चलो डेटाबेस से कनेक्ट करते हैं और अपनी पहली तालिका बनाते हैं।
mysql -h0 -P9306
यहाँ -h
ध्वज है होस्ट कनेक्शन के लिए, इसे 0
पर सेट किया गया है क्योंकि हम स्थानीय होस्ट से कनेक्ट करने की कोशिश कर रहे हैं। पोर्ट कनेक्शन के लिए -P
ध्वज का उपयोग करें (बड़े P का ध्यान रखें); हम आंतरिक पोर्ट नंबर का उपयोग कर रहे हैं।
चलो एक तालिका बनाते हैं जिसमें “info” फ़ील्ड पाठ के रूप में और “value” फ़ील्ड पूर्णांक के रूप में हो। इसके अतिरिक्त, चलो इस तालिका को अंग्रेजी शब्दों के लिए एक स्टेमर के साथ बढ़ाते हैं।
CREATE TABLE demo (info TEXT, value INT) morphology = 'stem_en';
Query OK, 0 rows affected (0.00 sec)
जब आपने एक तालिका कॉलम बनाया या बदला, तब कौन सी फ़ील्ड बनाई गईं, यह देखने के लिए, desc
कमांड का उपयोग करें (यह “विवरण” की तरह है)।
DESC demo
+-------+-----------+------------------+
| Field | Type | Properties |
+-------+-----------+------------------+
| id | bigint | |
| info | text | indexed stored |
| value | uint | |
+-------+-----------+------------------+
3 rows in set (0.00 sec)
साथ ही, आप देख सकते हैं कि तालिका के साथ कौन सा स्टेमिंग या लेम्मेटाइजिंग एल्गोरिदम संबंधित है:
SHOW TABLE demo SETTINGS;
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| settings | morphology = stem_en |
+---------------+-----------------------+
1 row in set (0.01 sec)
आइए तालिका में डेटा जोड़ें। नीचे एक विकल्प है एक रिकॉर्ड एक समय में जोड़ने के लिए:
INSERT INTO demo (info, value) VALUES ('Walking down the street', 1);
Query OK, 1 row affected (0.01 sec)
और यह बैच में रिकॉर्ड कैसे जोड़े:
INSERT INTO demo (info, value) VALUES ('Walking along the embankment', 2), ('Walking the dog', 3), ('Reading a book', 4), ('Book read ', 5);
Query OK, 3 rows affected (0.00 sec)
अब चलो देखें कि हमने तालिका में क्या लिखा है:
SELECT * FROM demo;
+-----------------------+----------------------------------------------------+-------+
| id | info | value |
+-----------------------+----------------------------------------------------+-------+
| 8217204862853578790 | Walking down the street | 1 |
| 8217204862853578791 | Walking along the embankment | 2 |
| 8217204862853578792 | Walking the dog | 3 |
| 8217204862853578793 | Reading a book | 4 |
| 8217204862853578794 | Book read | 5 |
+-----------------------+----------------------------------------------------+-------+
5 rows in set (0.01 sec)
चलो एक शब्द के लिए खोज करें जो जोड़े गए शब्दों के साथ निकटता में है:
SELECT * FROM demo WHERE match('read');
+---------------------+-----------------------------------+-------+
| id | info | value |
+---------------------+-----------------------------------+-------+
| 8217204862853578794 | Book read | 5 |
| 8217204862853578793 | Reading a book | 4 |
+---------------------+-----------------------------------+-------+
2 rows in set (0.01 sec)
आप यह भी देख सकते हैं कि किस कीवर्ड के लिए रिकॉर्ड पाए गए, उनकी संख्या, दस्तावेज़, और अधिक:
SHOW META;
+----------------+----------+
| Variable_name | Value |
+----------------+----------+
| total | 2 |
| total_found | 2 |
| total_relation | eq |
| time | 0.000 |
| keyword[0] | read |
| docs[0] | 2 |
| hits[0] | 2 |
+----------------+----------+
7 rows in set (0.01 sec)
उन फ़ील्ड्स के साथ काम करने के लिए जो पूरा-पाठ खोज में संलग्न नहीं हैं, गुण, आप क्लासिक SQL फ़िल्टरिंग स्टेटमेंट्स का उपयोग कर सकते हैं:
SELECT * FROM demo WHERE value > 3;
+---------------------+-----------------------------------+-------+
| id | info | value |
+---------------------+-----------------------------------+-------+
| 8217204862853578794 | Book read | 5 |
| 8217204862853578793 | Reading a book | 4 |
+---------------------+-----------------------------------+-------+
2 rows in set (0.01 sec)
रिकॉर्ड हटाना उसी तरह किया जा सकता है जैसे चयन प्रश्न:
DELETE FROM demo WHERE value = 5;
Query OK, 1 row affected (0.01 sec)
DELETE FROM demo WHERE match ('street');
Query OK, 1 row affected (0.01 sec)
DELETE FROM demo WHERE id = 8217204862853578791;
Query OK, 1 row affected (0.00 sec)
SELECT * FROM demo;
+---------------------+---------------------------------+-------+
| id | info | value |
+---------------------+---------------------------------+-------+
| 8217204862853578792 | Walking the dog | 3 |
| 8217204862853578793 | Reading a book | 4 |
+---------------------+---------------------------------+-------+
2 rows in set (0.00 sec)
क्यों न आप कुछ रिकॉर्ड जोड़ने और खोजने का प्रयास करें? जब आप समाप्त कर लें, तो हम अगले विषय पर जा सकते हैं।
बंद करना न भूलें:
exit;
आज के लिए बस इतना ही, अगले बार हम देखेंगे कैसे एक मौजूदा तालिका में शब्द रूपों की फ़ाइल बदलें और कैसे अपने रिकॉर्ड को अपडेट करें।