सामान्य तौर पर, Lucene में कोई भी विश्लेषक tokenizer + स्टेमर + स्टॉप-वर्ड फ़िल्टर है।
टोकनर आपके पाठ को विखंडू में विभाजित करता है, और चूंकि विभिन्न विश्लेषक अलग-अलग टोकन का उपयोग कर सकते हैं, इसलिए आप अलग-अलग आउटपुट टोकन स्ट्रीम प्राप्त कर सकते हैं , अर्थात पाठ के विखंडन के क्रम। उदाहरण के लिए, KeywordAnalyzer
आपने उल्लेख किया है कि पाठ को बिल्कुल विभाजित नहीं किया गया है और सभी फ़ील्ड को एकल टोकन के रूप में लिया गया है। एक ही समय में, StandardAnalyzer
(और अधिकांश अन्य विश्लेषक) विभाजन बिंदुओं के रूप में रिक्त स्थान और विराम चिह्न का उपयोग करते हैं। उदाहरण के लिए, वाक्यांश "मैं बहुत खुश हूं" यह सूची ["i", "am", "very", "happy"] (या ऐसा कुछ) का उत्पादन करेगा। विशिष्ट विश्लेषक / टोकनधारकों के बारे में अधिक जानकारी के लिए इसके जावा डॉक्स देखें ।
स्टेमर्स का उपयोग प्रश्न में किसी शब्द के आधार को प्राप्त करने के लिए किया जाता है। यह भारी रूप से प्रयुक्त भाषा पर निर्भर करता है। उदाहरण के लिए, अंग्रेजी में पिछले वाक्यांश के लिए कुछ ऐसा होगा जैसे ["i", "be", "veri", "happi"] का उत्पादन किया, और फ्रेंच "Je suis très heureux" के लिए कुछ प्रकार के फ्रेंच विश्लेषक (जैसे SnowballAnalyzer
, आरंभीकृत) "फ्रेंच") के साथ ["जेई", "ऑर्ट्रे", "ट्रे", "हेअर"] का उत्पादन होगा। बेशक, यदि आप एक भाषा के विश्लेषक का उपयोग दूसरे में पाठ स्टेम करने के लिए करेंगे, तो दूसरी भाषा के नियमों का उपयोग किया जाएगा और स्टेमर गलत परिणाम दे सकता है। यह सभी प्रणाली में विफल नहीं है, लेकिन खोज परिणाम तब कम सटीक हो सकते हैं।
KeywordAnalyzer
किसी भी स्टेमर्स का उपयोग नहीं करता है, यह सभी क्षेत्र को बिना लाइसेंस के पास करता है। इसलिए, यदि आप अंग्रेजी पाठ में कुछ शब्द खोजने जा रहे हैं, तो इस विश्लेषक का उपयोग करना अच्छा नहीं है।
स्टॉप शब्द सबसे लगातार और लगभग बेकार शब्द हैं। फिर, यह बहुत हद तक भाषा पर निर्भर करता है। अंग्रेजी के लिए ये शब्द "a", "the", "I", "be", "have", इत्यादि हैं। स्टॉप-वर्ड फिल्टर उन्हें टोकन स्ट्रीम से खोज परिणामों में कम शोर तक निकाल देते हैं, इसलिए अंत में हमारा वाक्यांश "I" "मी बहुत खुश" के साथ StandardAnalyzer
सूची में बदल जाएगा ["वेरी", "हैप्पी"]।
और KeywordAnalyzer
फिर कुछ नहीं करता। तो, KeywordAnalyzer
आईडी या फोन नंबर जैसी चीजों के लिए उपयोग किया जाता है, लेकिन सामान्य पाठ के लिए नहीं।
और आपके maxClauseCount
अपवाद के रूप में, मेरा मानना है कि आप इसे खोजते हैं। इस मामले में संभवत: यह बहुत जटिल खोज क्वेरी के कारण है। इसे कई प्रश्नों में विभाजित करने या अधिक निम्न स्तर के कार्यों का उपयोग करने का प्रयास करें।