यदि आप StandardAnalyzer
का उपयोग कर रहे हैं, तो यह गैर-अल्फानम वर्णों को त्याग देगा। WhitespaceAnalyzer
के साथ समान मान को अनुक्रमणित करने का प्रयास करें और देखें कि क्या आपको आवश्यक वर्णों को संरक्षित किया गया है या नहीं। यह उन सामानों को भी रख सकता है जिन्हें आप नहीं चाहते हैं: यही वह समय है जब आप अपने स्वयं के विश्लेषक लिखने पर विचार कर सकते हैं, जिसका मूल रूप से टोकनस्ट्रीम स्टैक बनाना है जो वास्तव में आपको जिस प्रकार की प्रोसेसिंग की आवश्यकता है।
उदाहरण के लिए, SimpleAnalyzer
लागू करता है निम्नलिखित पाइपलाइन:
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
return new LowerCaseTokenizer(reader);
}
जो सिर्फ कम मामलों टोकन।
StandardAnalyzer
भी बहुत कुछ करता है:
/** Constructs a {@link StandardTokenizer} filtered by a {@link
StandardFilter}, a {@link LowerCaseFilter} and a {@link StopFilter}. */
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
StandardTokenizer tokenStream = new StandardTokenizer(matchVersion, reader);
tokenStream.setMaxTokenLength(maxTokenLength);
TokenStream result = new StandardFilter(tokenStream);
result = new LowerCaseFilter(result);
result = new StopFilter(enableStopPositionIncrements, result, stopSet);
return result;
}
आप org.apache.lucene.analysis
में इन और अन्य घटकों से & मैच मिश्रण कर सकते हैं, या आप अपने स्वयं विशेष TokenStream
उदाहरणों कि अपने कस्टम Analyzer
द्वारा एक प्रोसेसिंग पाइपलाइन में लपेटा जाता है लिख सकते हैं ।
एक और बात यह देखने के लिए है कि CharTokenizer
आप किस प्रकार का उपयोग कर रहे हैं। CharTokenizer
एक अमूर्त वर्ग है जो टोकनिंग टेक्स्ट स्ट्रिंग के लिए मशीनरी निर्दिष्ट करता है। इसका उपयोग कुछ सरल विश्लेषकों द्वारा किया जाता है (लेकिन StandardAnalyzer
द्वारा नहीं)। ल्यूसीन दो उप-वर्गों के साथ आता है: LetterTokenizer
और WhitespaceTokenizer
। आप अपना खुद का निर्माण कर सकते हैं जो आपको आवश्यक अक्षरों को रखता है और boolean isTokenChar(char c)
विधि को लागू करके उन पर टूट जाता है।
- कस्टम विश्लेषक बनाएं
- अनुक्रमण के लिए यह प्रयोग करें और खोज
उदाहरण है कि यह कैसे काम करता है:
स्रोत
2011-05-25 04:36:06
PLease आप जो खोज रहे हैं और क्या बनाया गया है इसका एक उदाहरण दें। "क्वेरी के रूप में +" के साथ आपका क्या मतलब है? – morja
मैं विशेष वर्णों की खोज कर रहा हूं जैसे +! ? आदि। मुझे समाधान मिला। दरअसल हम कुछ कस्टम विश्लेषक का उपयोग कर रहे हैं और फ़िल्टर के लागू होने के कारण यह ब्लैंक क्वेरी (+()) दे रहा था। लेकिन जब मैंने कीवर्ड विश्लेषक का उपयोग किया तो यह काम करता था। ** कोई भी इस पर कोई इनपुट कैसे? ** – user660024
क्या आप अनुक्रमण के लिए और क्वेरी के लिए एक ही विश्लेषक का उपयोग कर रहे हैं? कृपया अपनी सटीक क्वेरी का वर्णन करने वाला एक कोड उदाहरण जोड़ें और खोज को कॉल करने से पहले आप इसे कैसे संसाधित करते हैं। –