इस लेख में हम मैंटिकोर खोज में उपलब्ध दो शब्दकोष प्रकारों के बीच अंतर पर चर्चा करेंगे।
शब्दकोष एक सूचकांक घटक है जो सूचीबद्ध शब्दों को संग्रहित करता है। पहली सूचकांक ने ‘crc’ शब्दकोष प्रकार का उपयोग किया, जिसमें शब्दों को उनके नियंत्रण सम मान के साथ बदल दिया जाता है जो CRC32 या FVN64 का उपयोग करके, यह इस बात पर निर्भर करता है कि Sphinx को enable-id64 के साथ संकलित किया गया था या नहीं। मैंटिकोर में केवल FVN64 का उपयोग किया जाता है, क्योंकि 32 बिट आईडी को हटा दिया गया है।
रियल-टाइम सूचकांक की शुरुआत के साथ और कुछ संभावित कमियों के कारण एक वैकल्पिक शब्दकोष प्रकार की आवश्यकता उत्पन्न हुई। Sphinx 2 में ‘कीवर्ड’ शब्दकोष जोड़ा गया, जो वास्तविक शब्दों को संग्रहित करता है और नीचे चर्चा किए गए ‘crc’ की कमियों को ठीक करता है, लेकिन इसके साथ अपनी स्वयं की मामूली समस्याएं हैं।
रियल-टाइम सूचकांक (साथ ही नई परकोलेट सूचकांक ) केवल ‘कीवर्ड’ प्रकार का उपयोग कर सकते हैं, जबकि ‘crc’ प्रकार केवल सादी सूचकांक के लिए उपलब्ध है। सादी सूचकांक को रियल-टाइम में परिवर्तित करने के लिए ‘कीवर्ड’ शब्दकोष की आवश्यकता होती है। कुछ नई कार्यक्षमता जैसे CALL QSUGGEST को वास्तविक शब्दों को संग्रहित करने की आवश्यकता होती है और यह ‘crc’ शब्दकोष के साथ नहीं किया जा सकता।
यदि उपसर्ग/इन्फिक्सिंग सक्षम नहीं है: ‘कीवर्ड’ शब्दकोष वाली सूचकांक को सूचीबद्ध करने में धीमा होता है। पहला कारण यह है कि ‘कीवर्ड’ शब्दकोष में पूरे शब्द (127 अक्षरों तक) संग्रहित किए जाते हैं, जबकि ‘crc’ किसी भी शब्द को 4-बाइट हैश में मोड़ता है। सूचीकरण के अंतिम चरण में, ‘कीवर्ड’ प्रकार को शब्दों की क्रमबद्धता करनी होती है, जिसमें कुछ समय लग सकता है। संक्षेप में, ‘कीवर्ड’ के मामले में सूचीकरण ‘crc’ की तुलना में 10%-40% धीमा हो सकता है। जब उपसर्ग/इन्फिक्स अक्षम होते हैं तो सूचकांक का आकार और खोज समय समान होते हैं।
यदि उपसर्ग/इन्फिक्सिंग सक्षम है: ‘crc’ को उप-स्ट्रिंग के लिए अतिरिक्त शब्द परिवर्तन बनाने होते हैं और इस मामले में ‘कीवर्ड’ की तुलना में धीमा हो सकता है। ‘कीवर्ड’ शब्दकोष को केवल उपसर्ग सक्षम होने पर सूचीकरण के दौरान अतिरिक्त चरण करने की आवश्यकता नहीं होती है। केवल इन्फिक्सिंग के लिए यह QSUGGEST के लिए शब्दों से ट्राइग्राम निकालता और एकत्र करता है। अतिरिक्त शब्द परिवर्तनों के कारण, ‘crc’ सूचकांक का आकार उपसर्ग/इन्फिक्स अक्षम संस्करण की तुलना में 10x तक बढ़ सकता है। चूंकि इसे अतिरिक्त उप-स्ट्रिंग संग्रहित करने की आवश्यकता नहीं होती है, ‘कीवर्ड’ शब्दकोष वाली सूचकांक उपसर्ग/इन्फिक्स अक्षम संस्करण की तुलना में आकार में नहीं बढ़ती।
वाइल्डकार्ड के लिए, ‘कीवर्ड’ मोड में एक कीवर्ड को सूचकांक में मैच करने वाले सभी संभव संग्रहित शब्दों में विस्तारित किया जाता है। कुछ अतिसीमा के मामलों में, विस्तार हजारों शब्दों की संख्या तक हो सकता है, जो क्वेरी को धीमा कर सकता है। प्रभाव ‘
expansion_limit
’ के साथ सीमित किया जा सकता है या समस्याग्रस्त विस्तारों से बचकर। ‘CRC’ में यह समस्या नहीं है, क्योंकि विस्तार सूचीकरण के समय गणना की जाती है और क्वेरी के समय नहीं। जबकि इसकी गति में लाभ है, सूचकांक का आकार ‘crc’ प्रकार के लिए मुख्य समस्या बना हुआ है। 't?st*'
या 'run%'
जैसी वाइल्डकार्ड खोजों के लिए विशेष प्रतीकों '?'
और '%'
का उपयोग करना संभव नहीं है।
कुल मिलाकर, ‘कीवर्ड’ प्रकार बेहतर विकल्प है क्योंकि यह अधिक कार्यक्षमता प्रदान करता है और वाइल्डकार्ड खोजों की इच्छा होने पर सूचकांक का आकार नियंत्रण में रखा जाता है। हालांकि, वाइल्डकार्ड खोजों में कुछ मामलों में ध्यान देने की आवश्यकता हो सकती है।
जबकि ‘crc’ को Sphinx में अप्रचलित के रूप में चिह्नित किया गया था, हमने इस चिह्न को हटाने का निर्णय लिया क्योंकि ‘crc’ कुछ मामलों में अभी भी उपयोगी हो सकता है।
‘crc’ का लाभ सूचीकरण की गति है, जो डेल्टा सूचकांक का उपयोग करते समय महत्वपूर्ण हो सकता है जिन्हें एक निश्चित समय सीमा में फिट करने की आवश्यकता होती है। वाइल्डकार्ड खोज के लिए, ‘crc’ दोधारी तलवार है: जबकि इसमें ‘कीवर्ड’ की तरह संभावित प्रदर्शन संबंधी समस्याएं नहीं हैं, उपयोग करते समय इसकी स्थान आवश्यकताओं पर ध्यान देना चाहिए।