इस लेख में हम वर्ण सेट तालिकाओं और स्टॉपवर्ड में नए परिवर्धनों के बारे में बात करते हैं जो सूचकांक कॉन्फ़िगर करते समय इन विकल्पों का उपयोग सरल बनाने का लक्ष्य रखते हैं।
जब एक दस्तावेज़ पाठ का प्रारंभिक विश्लेषण किया जाता है, तो Manticore सर्च को यह जानने की आवश्यकता होती है कि पाठ में कौन से प्रतीक आगे की प्रक्रिया के लिए अर्थपूर्ण हैं (पूर्ण पाठ को अलग-अलग शब्दों में तोड़ना, रूपविज्ञान का प्रसंस्करण करना आदि) और कौन से नहीं। वैध पाठ वर्णों को परिभाषित करने के लिए, charset_table विकल्प का उपयोग किया जाता है। इस विकल्प के माध्यम से आप उन प्रतीकों का सेट निर्दिष्ट कर सकते हैं जिनके साथ आप काम करना चाहते हैं।
इसके अलावा, बेहतर पाठ खोज गुणवत्ता प्रदान करने के लिए, Manticore सर्च को चरित्र फोल्डिंग करने की आवश्यकता होती है। उदाहरण के लिए, जब आपके खोज प्रश्न का विश्लेषण किया जाता है, तो बड़े अक्षर के प्रतीक छोटे अक्षर के प्रतीकों पर मानचित्रित होते हैं, डाइक्रिटिक प्रतीक (जैसे â, ê, î, ô आदि) उनके मूल समकक्ष पर मानचित्रित होते हैं और इसी तरह। Charset तालिका वह तंत्र है जो इन सभी परिवर्तनों को परिभाषित करती है।
एक विशेष मामला वे भाषाएँ हैं जैसे चीनी, जिनमें असंगठित पाठ होता है जिसे अलग-अलग शब्दों में आसानी से विभाजित नहीं किया जा सकता क्योंकि इनमें स्पष्ट शब्द विभाजक नहीं होते हैं। (‘CJK’ इन भाषाओं के लिए एक व्यापक रूप से इस्तेमाल किया जाने वाला शब्द है, जो चीनी-जापानी-कोरियन का संक्षेप है।) इन भाषाओं के लिए प्रभावी खोज प्रदान करने के लिए,
ngram_chars
विकल्प को
ngram_len
के साथ उपयोग किया जाना चाहिए। यह पाठ को अलग-अलग N-ग्राम के सेट के रूप में मानता है, प्रत्येक N-ग्राम एक क्रम है जिसमें वर्णों की लंबाई ngram_len
मान के बराबर होती है। (वर्तमान में केवल ngram_len = 1
का समर्थन किया जाता है।) ये वर्ण ngram_chars निर्देश में परिभाषित होने चाहिए और सामान्य charset_table में नहीं दिखाई देने चाहिए।
तो यदि आप चाहते हैं कि आपकी खोज विभिन्न भाषाओं का समर्थन करे, तो आपको सभी के लिए वैध वर्णों और फोल्डिंग नियमों के सेट को परिभाषित करना होगा, जो एक काफी श्रमसाध्य कार्य हो सकता है।
हमने आपके लिए इस कार्य को करने का प्रयास किया है और डिफ़ॉल्ट charset तालिकाएँ तैयार की हैं जो क्रमशः गैर-CJK और CJK भाषाओं को शामिल करती हैं। ये तालिकाएँ अधिकांश मामलों में उपयोग करने के लिए पर्याप्त होनी चाहिए। ये ICU वर्ण फोल्डिंग डेटा पर आधारित हैं जो यहाँ देखा जा सकता है और निम्नलिखित फोल्डिंग को परिभाषित करती हैं:
ascii मूल अंक फोल्डिंग
केस फोल्डिंग
डाइक्रिटिक फोल्डिंग
हान चरित्र फोल्डिंग
हीरागना फोल्डिंग
काताकाना फोल्डिंग
पत्रक फोल्डिंग
सरलित हान फोल्डिंग
उपसर्ग फोल्डिंग
सुपरसक्रिप्ट फोल्डिंग
चौड़ाई फोल्डिंग
यहाँ आप डिफ़ॉल्ट चार्ट सेट के लिए उपयोग की जाने वाली स्रोत फ़ाइलें देख सकते हैं: cjk.txt , non_cjk.txt
CJK और गैर-CJK भाषाओं के साथ काम करने के लिए, आपको अपने कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित तरीके से विकल्प सेट करने चाहिए:
charset_table = non_cjk
...
ngram_len = 1
ngram_chars = cjk
यदि आपको CJK भाषाओं का समर्थन करने की आवश्यकता नहीं है, तो आप बस ngram_len
और ngram_chars
विकल्पों को छोड़ सकते हैं।
यदि आपको अभी भी कुछ विशिष्ट नियमों की आवश्यकता है जो निश्चित भाषाओं के लिए सक्षम हों, तो आप मैन्युअल रूप से उपयुक्त वर्ण तालिकाएँ बना सकते हैं और उन्हें डिफ़ॉल्ट तालिकाओं के बजाय अपने कॉन्फ़िगरेशन फ़ाइल में रख सकते हैं।
उपरोक्त विकल्पों के अलावा, आप कुछ सबसे सामान्य शब्दों को आगे की प्रक्रिया और अनुक्रमण से बाहर करने के लिए stopwords विकल्प का उपयोग कर सकते हैं, जिनका सामान्यतः खोज प्रश्नों के लिए ज्यादा महत्व नहीं होता है। उदाहरण के लिए, अंग्रेजी भाषा के लिए इनमें शायद a, the, this, that आदि शामिल होंगे। इस विकल्प को सक्षम करने के लिए, अपनी स्टॉपवर्ड फ़ाइल बनाएं और अपने कॉन्फ़िगरेशन फ़ाइल में इसका पथ सेट करें:
stopwords = /path/to/your/stopwords/file.txt
स्टॉपवर्ड फ़ाइल का प्रारूप एक साधारण पाठ है, जिसमें सभी शब्दों की सूची होती है जिन्हें आप स्टॉप शब्द के रूप में मानते हैं, प्रत्येक पंक्ति में एक शब्द। स्टॉपवर्ड फ़ाइल बनाने के लिए, एक को इसे मैन्युअल रूप से बनाना होगा या indexer
टूल का उपयोग करना होगा जो अनुक्रम में सबसे अधिक बार प्रदर्शित होने वाले शब्दों की सूची प्रदान कर सकता है।
वैकल्पिक रूप से, ठीक वैसे ही जैसे charset_table
और ngram_chars
विकल्पों के मामले में, अब आप हमारी डिफ़ॉल्ट स्टॉपवर्ड फ़ाइलों में से एक का उपयोग कर सकते हैं। वर्तमान में 50 भाषाओं के लिए स्टॉपवर्ड उपलब्ध हैं। यहाँ उनके लिए पूर्ण उपनामों की सूची है:
af - अफ्रीकन्स
ar - अरबी
bg - बुल्गेरियाई
bn - बांग्ला
ca - कैटलन
ckb- कर्बिश
cz - चेक
da - डेनिश
de - जर्मन
el - ग्रीक
en - अंग्रेजी
eo - एस्पेरेंटो
es - स्पेनिश
et - एस्टोनियन
eu - बास्क
fa - फ़ारसी
fi - फ़िनिश
fr - फ्रेंच
ga - आयरिश
gl - गैलिशियन
hi - हिंदी
he - हिब्रू
hr - क्रोएशियाई
hu - हंगेरियन
hy - आर्मेनियाई
id - इंडोनेशियाई
it - इटालियन
ja - जापानी
ko - कोरियाई
la - लैटिन
lt - लिथुआनियाई
lv - लाटवियाई
mr - मराठी
nl - डच
no - नॉर्वेजियन
pl - पोलिश
pt - पुर्तगाली
ro - रोमानियाई
ru - रूसी
sk - स्लोवाक
sl - स्लोवेनियन
so - सोमाली
st - सोथो
sv - स्वीडिश
sw - स्वाहिली
th - थाई
tr - तुर्की
yo - योरूबा
zh - चीनी
zu - ज़ुलु
इत्यादि, इटालियन भाषा के लिए स्टॉपवर्ड का उपयोग करने के लिए, बस अपनी कॉन्फ़िग फ़ाइल में निम्नलिखित पंक्ति डालें:
stopwords = it
यदि आपको कई भाषाओं के लिए स्टॉपवर्ड का उपयोग करने की आवश्यकता है, तो आपको उनके सभी उपनामों को सूचीबद्ध करना चाहिए, जिन्हें अल्पविराम से अलग किया गया हो:
stopwords = en,it,ru
सभी डिफ़ॉल्ट स्टॉपवर्ड्स फ़ाइलें अलग-अलग फ़ोल्डर में संग्रहित की जाती हैं। आप उन्हें Windows मशीनों पर अपने Manticore इंस्टॉलेशन फ़ोल्डर में /share/stopwords
और Linux मशीनों पर /usr/local/share/manticore/stopwords
में पा सकते हैं। वर्तमान में जिन सभी भाषाओं के लिए डिफ़ॉल्ट स्टॉपवर्ड्स प्रदान किए जाते हैं, उनकी सूची languages_list.txt
में भी यहीं मिल सकती है।