TL;DR
हम Manticore Search में दो नए महत्वपूर्ण सुविधाओं को पेश करते हैं: फजी खोज और क्वेरी सुझाव (या “ऑटोकम्प्लीट”)। ये सुविधाएँ खोज क्षमताओं में सुधार करती हैं, जो एक अधिक उपयोगकर्ता-मित्रवत अनुभव प्रदान करती हैं। आप उन्हें हमारे ओपन-सोर्स गिटहब इश्यू सर्च डेमो में क्रियान्वित होते हुए देख सकते हैं।
- गिटहब डेमो में यह कैसे काम करता है, देखें
- ओपन-सोर्स प्रोजेक्ट का अन्वेषण करें: गिटहब डेमो रिपॉजिटरी
परिचय
आपने गिटहब इश्यू सर्च डेमो और इसमें सेमांटिक सर्च को जोड़ने के बारे में पढ़ा होगा। हाल ही में, हमने इसमें ऑटोकम्प्लीट कार्यक्षमता जोड़ी। यह प्रक्रिया सरल है और केवल न्यूनतम परिवर्तन की आवश्यकता होती है। अधिक विवरण के लिए, इस लेख को देखें: नई फजी खोज और ऑटोकम्प्लीट । आज, हम दो नई सुविधाएँ साझा करना चाहते हैं जो खोज अनुभव को और बेहतर बनाती हैं: फजी खोज और क्वेरी सुझाव (जिसे “ऑटोकम्प्लीट” के रूप में भी जाना जाता है):
- फजी खोज उपयोगकर्ताओं को छोटे टाइपो के साथ भी परिणाम खोजने में मदद करती है।
- क्वेरी सुझाव उपयोगकर्ताओं द्वारा टाइप करते समय प्रासंगिक वाक्यांशों का सुझाव देते हैं, जिससे खोज प्रक्रिया तेज होती है।
ये सुविधाएँ केवल हमारे गिटहब मुद्दों के लिए खोज उपकरण की उपयोगिता को सुधारती हैं, बल्कि वास्तविक दुनिया के खोज परिदृश्यों में Manticore Search की उन्नत क्षमताओं को प्रदर्शित करती हैं, उपयोगकर्ता इंटरफेस को बेहतर बनाती हैं और अधिक प्रासंगिक परिणाम प्रदान करती हैं।
फजी खोज का कार्यान्वयन
टाइपो टॉलरेंस की चुनौती
खोज उपकरणों के साथ एक सामान्य निराशा होती है जब एक साधारण टाइपो के कारण कोई परिणाम नहीं मिलता। उपयोगकर्ता अपेक्षा करते हैं कि खोज इंजन उनकी मंशा को समझे, भले ही वे छोटे वर्तनी की गलतियाँ करें। कुछ मामलों में, इसे सेमांटिक सर्च के साथ संदर्भ समझने का उपयोग करके हल किया जा सकता है, हालांकि पारंपरिक कीवर्ड खोजों के लिए, फजी खोज आदर्श समाधान है।
CALL QSUGGEST
के साथ धरोहर फजी मेल
ऐतिहासिक रूप से, Manticore Search ने अपने <code>CALL QSUGGEST</code> और <code>CALL SUGGEST</code> विधियों के माध्यम से फजी मेल के लिए अंतर्निहित समर्थन प्रदान किया। पहली विधि आपको दिए गए वाक्यांश में अंतिम शब्द को एक लेवेनस्टीन दूरी के साथ खोजने की अनुमति देती है, जो एक प्रकार की टाइपो-टॉलरेंट खोज सक्षम करती है, लेकिन केवल अंतिम शब्द के लिए। और दूसरी विधि आपके वाक्यांश में पहले शब्द के लिए ही काम करती है। Manticore PHP क्लाइंट का उपयोग करते हुए उदाहरण:
$params = [
'index' => 'issue',
'body' => [
'query'=> 'fzzy',
'options' => [
'limit' => 10,
'max_edits' => 2,
],
],
];
$response = $client->suggest($params);
इस कोड स्निपेट में, क्लाइंट मिस्पेल्ड एकल शब्द “fzzy” के लिए सुझाव खोजने के लिए CALL SUGGEST
फ़ंक्शन का उपयोग करता है। max_edits
पैरामीटर इनपुट शब्द और संभावित सुझावों के बीच अधिकतम लेवेनस्टीन दूरी को नियंत्रित करता है। लेवेनस्टीन दूरी एक शब्द को दूसरे में बदलने के लिए आवश्यक एकल-चरित्र परिवर्तनों (सम्मिलन, विलोपन, या प्रतिस्थापन) की न्यूनतम संख्या है। max_edits
को 2 पर सेट करके, हम 2 वर्ण के अंतर की अनुमति देते हैं, जिससे टाइपो और समान शब्दों को उस संपादन दूरी के भीतर खोजा जा सकता है।
जबकि यह दृष्टिकोण शक्तिशाली है, यह कुछ हद तक जटिल हो सकता है क्योंकि आपको अपने आवेदन में फ़ंक्शन द्वारा लौटाए गए सभी सुझावों को संभालना होगा। इसके अलावा, CALL QSUGGEST
कीबोर्ड लेआउट अनुमान को नहीं संभालता (हम इसके बारे में जल्द ही चर्चा करेंगे)। फजी खोज को अधिक उपयोगकर्ता-मित्रवत और एकीकृत करने में आसान बनाने के लिए, हमने Manticore Search में एक नया विकल्प पेश किया है जो विशेष पैरामीटर के साथ फजी खोज की अनुमति देता है, बिना अतिरिक्त कोड या कस्टम तर्क की आवश्यकता के।
नई सरल फजी मेलिंग
अब, हमारे पास एक सरल विकल्प है। अपनी खोज क्वेरी विकल्पों में fuzzy=1
जोड़कर, आप आसानी से फजी खोज सक्षम कर सकते हैं।
यहाँ एक सरल उदाहरण है:
$client = new Client();
$index = $client->index('issues');
$query = 'fzzy serch';
$result = $index->search($query)->option('fuzzy', 1)->get();
foreach ($result as $hit) {
echo $hit->getTitle() . "\n";
}
यह कोड मिस्पेल्ड “fzzy serch” के लिए फजी खोज सक्षम करता है, जिससे Manticore “fuzzy search” खोजने में सक्षम होता है। हमारे गिटहब सर्च डेमो में यह ऐसा दिखता है:
आप फजी मेलिंग के बारे में और अधिक पढ़ सकते हैं फजी खोज दस्तावेज़ में।
क्वेरी सुझाव (ऑटोकम्प्लीट) का कार्यान्वयन
भविष्यवाणी खोज की शक्ति
क्वेरी सुझाव या ऑटोकम्प्लीट सुविधाएँ खोज को तेज बनाती हैं और उपयोगकर्ताओं को उन प्रासंगिक क्वेरियों की खोज करने में मदद करती हैं जिनके बारे में उन्होंने सोचा नहीं हो सकता:
CALL KEYWORDS
के साथ धरोहर ऑटोकम्प्लीट
फजी मेलिंग के लिए CALL QSUGGEST
के समान, Manticore Search ने ऐतिहासिक रूप से एक और विधि, CALL KEYWORDS
, प्रदान किया है, जिसका उपयोग ऑटोकम्प्लीट कार्यक्षमता के लिए किया जा सकता है। यह विधि आपको अपनी तालिका में कीवर्ड्स पर प्रीफिक्स और इन्फिक्स मेलिंग करने की अनुमति देती है, जो ऑटोकम्प्लीट सुविधाओं को लागू करने का एक सरल लेकिन प्रभावी तरीका प्रदान करती है। दुर्भाग्यवश, यह केवल सख्त प्रीफिक्स/सफिक्स मेलिंग के साथ काम करता है बिना टाइपो टॉलरेंस के, जिसका अर्थ है कि यदि कोई उपयोगकर्ता गलती करता है, तो यह कोई कीवर्ड नहीं पाएगा। यहाँ यह Manticore PHP क्लाइंट के साथ कैसे उपयोग किया जा सकता है:
$index = 'myindex';
$query = 'pref*';
$response = $client->keywords($index, $query);
foreach ($response as $keyword) {
echo $keyword['normalized'] . ' (docs: ' . $keyword['docs'] . ', hits: ' . $keyword['hits'] . ")\n";
}
इस उदाहरण में, हम CALL KEYWORDS
विधि का उपयोग कर रहे हैं myindex
तालिका में सभी कीवर्ड ढूंढने के लिए जो pref
से शुरू होते हैं। pref*
के अंत में तारांकित चिह्न (*
) एक उपसर्ग मिलान को दर्शाता है। आप दोनों तरफ अपने खोज शब्द पर तारांकित चिह्न रखकर अंतःशब्द मिलान भी कर सकते हैं, जैसे *कुछ*
।
हालांकि यह विधि ऑटोकंप्लीट लागू करने के लिए तेज़ और सीधी है, यह फ़ज़ी मिलान की लचीलेपन से रहित है। आपको दिए गए उपसर्ग या अंतःशब्द के लिए सटीक मिलान चाहिए, जो उन मामलों के लिए उपयुक्त है जहां सटीक कीवर्ड सुझाव आवश्यक हैं। यहीं पर नई ऑटोकंप्लीट विधि खोज अनुभव में सुधार करने के लिए आती है।
नई ऑटोकंप्लीट विधि
हमने एक नई विधि पेश की है जो कई इनपुट शब्दों से सुझाव बनाती है और गलत वर्तनी का समर्थन करती है। यह विधि CALL KEYWORDS
और CALL QSUGGEST
के कार्यों को संयोजित करती है।
उदाहरण के लिए, PHP क्लाइंट में नई ऑटोकंप्लीट सुविधा का उपयोग करने का तरीका यहां दिया गया है:
$client = new Client();
$result = $client->autocomplete([
'body' => [
'table' => 'issues',
'query' => 'hllo wor',
'options' => [
'fuzziness' => 1,
'layouts' => ['us', 'ru'],
],
],
]);
foreach ($result[0]['data'] as $suggestion) {
echo $suggestion . "\n";
}
यह कोड “hllo wor” इनपुट के लिए “hello world” सुझाता है, टाइपो और कीबोर्ड लेआउट मुद्दों को ध्यान में रखते हुए।
यह आंतरिक रूप से इस प्रकार किया जाता है: हमने फ़ज़ी खोज से फ़ज़ीनेस तर्क का पुन: उपयोग किया ताकि आपके डेटासेट से प्रासंगिक सुझाव उत्पन्न किए जा सकें। विधि कम-स्तरीय CALL KEYWORDS
और CALL QSUGGEST
कार्यक्षमता का उपयोग करती है।
सटीक सुझाव सुनिश्चित करने के लिए, हम शब्द की लंबाई और उपलब्ध दस्तावेजों की संख्या के आधार पर दूरी का आकलन करते हैं। उदाहरण के लिए, यदि कोई उपयोगकर्ता “hllo wor” टाइप करता है और आपके डेटा में “hello world” शामिल है, तो सिस्टम उसकी फ़ज़ीनेस सुविधा के कारण “hello world” सुझाएगा। यह दृष्टिकोण उपयोगकर्ताओं को गलत वर्तनी के साथ भी सटीक सुझाव प्राप्त करने में मदद करता है।
आप ऑटोकंप्लीट दस्तावेज़ीकरण में ऑटोकंप्लीट के बारे में अधिक जानकारी पा सकते हैं।
कीबोर्ड लेआउट अनुमान
हमने कीबोर्ड लेआउट अनुमान भी जोड़ा है। यदि आपने कभी गलत लेआउट के साथ टाइप किया है, तो आप इस सुविधा की सराहना करेंगे। मैंटिकोर अब लेआउट परिवर्तन के साथ भी आपके अभिप्रेत इनपुट की पहचान कर सकता है।
हमने सामान्य कीबोर्ड लेआउट, भाषा-विशिष्ट लेआउट और QWERTY सहित सभी को मैप किया है। अब, मैंटिकोर आपके अभिप्रेत इनपुट को निर्धारित कर सकता है, जो लेआउट त्रुटियों के होने पर भी सटीकता को बढ़ाता है।
लाभों में शामिल हैं:
- बहुभाषी उपयोगकर्ताओं के लिए बेहतर खोज सटीकता
- अनजाने लेआउट परिवर्तन से होने वाली निराशा को समाप्त करना
- हमारी फ़ज़ी खोज और ऑटोकंप्लीट सुविधाओं के साथ निर्बाध एकीकरण
GitHub मुद्दा खोज डेमो में नई सुविधाओं को लागू करना
इन नई सुविधाओं के साथ, हम अपने GitHub मुद्दा खोज डेमो को बेहतर बनाने के लिए उत्साहित थे। मैंटिकोर के उपयोगकर्ता-अनुकूल डिजाइन के कारण फ़ज़ी खोज और ऑटोकंप्लीट को एकीकृत करना सीधा था।
फ़ज़ी खोज को सक्षम करने के लिए, हमने अपने खोज क्वेरी में इन पंक्तियों को शामिल किया:
$search->option('fuzzy', 1);
$search->option('layouts', ['ru', 'us', 'ua']);
क्वेरी सुझावों के लिए, हमने नई ऑटोकंप्लीट फ़ंक्शन का उपयोग किया:
$result = $client->autocomplete([
'body' => [
'table' => $table,
'query' => $query,
'options' => [
'fuzziness' => 1,
'layouts' => ['ru', 'ua', 'us'],
],
],
]);
इन सुधारों ने हमारे डेमो में खोज कार्यक्षमता को काफी बेहतर बनाया, उपयोगकर्ताओं को अधिक सटीक परिणाम और उपयोगी सुझाव प्रदान किए।
GitHub मुद्दा खोज डेमो में यह कैसा दिखता है
मैंटिकोर खोज के साथ ऑटोकंप्लीट और फ़ज़ी खोज के साथ कीबोर्ड लेआउट अनुमान का एकीकरण उपयोगकर्ताओं को खोज उपकरण के साथ बातचीत करने के तरीके में सुधार करता है। खोज के लिए फ़ज़ीनेस का लाभ उठाकर और टाइपिंग पैटर्न के आधार पर सुझाव देकर, उपयोगकर्ता जल्दी से प्रासंगिक परिणाम ढूंढ सकते हैं।
यहां देखें कि ऑटोकंप्लीट सुविधा कैसे काम करती है, लोकप्रिय खोज सुझाव इंटरफ़ेस की नकल करते हुए:
इसके अलावा, फ़ज़ी खोज गलत वर्तनी जैसी सामान्य समस्याओं को संबोधित करके उपयोगकर्ता बातचीत को बेहतर बनाता है। यदि कोई किसी उत्पाद के लिए खोज करता है लेकिन टाइपो करता है, तो फ़ज़ी खोज यह सुनिश्चित करती है कि उन्हें फिर भी प्रासंगिक परिणाम मिलें। GitHub मुद्दा खोज डेमो में यह इस प्रकार दिखता है:
निष्कर्ष
फ़ज़ी खोज और क्वेरी सुझावों को मैंटिकोर खोज में एकीकृत करके, हमने इसकी क्षमताओं में बहुत सुधार किया है। ये सुविधाएं खोज को अधिक सहज, क्षमाशील और कुशल बनाती हैं।
हम आपको प्रोत्साहित करते हैं कि आप इन नई सुविधाओं को हमारे GitHub मुद्दा खोज डेमो में आज़माएं और अपनी प्रतिक्रिया साझा करें। मैंटिकोर खोज की क्षमताओं को परिष्कृत और विस्तारित करते रहने में आपके विचार अमूल्यवान हैं।
अधिक अपडेट के लिए तैयार रहें, और कृपया हमारे GitHub रिपॉजिटरी को तारांकित करें यदि आपको परियोजना उपयोगी लगती है!