के लिए उपयुक्त मान के साथ एक नया अनुरोध सबमिट करने जितना सरल है, मैं जैमी द्वारा समझाया गया समाधान से सहमत हूं। लेकिन मैं एक और पहलू को इंगित करना चाहता हूं जिसके बारे में आपको अवगत होना चाहिए और जो खोज इंजन के सामान्य तंत्र को समझने में मदद कर रहा है।
TopDocCollector के साथ आप स्कोर या अन्य प्रकार के मानदंडों द्वारा क्रमबद्ध होने से पहले, अपनी खोज क्वेरी से मेल खाने के लिए कितनी हिट एकत्र करना चाहते हैं, यह परिभाषित कर सकते हैं।
collector = TopScoreDocCollector.create(9999, true);
searcher.search(parser.parse("Clone Warrior"), collector);
// get first page
topDocs = collector.topDocs(0, 10);
int resultSize=topDocs.scoreDocs.length; // 10 or less
int totalHits=topDocs.totalHits; // 9999 or less
हम Lucene यहाँ बता 9999 खोज वाक्यांश 'क्लोन योद्धा' वाले दस्तावेज़ों की एक अधिकतम एकत्र करने के लिए:
निम्नलिखित उदाहरण देखें। इसका मतलब है, अगर सूचकांक में 99 99 से अधिक दस्तावेज हैं जो इस खोज वाक्यांश वाले हैं, तो 99 99 हिट से भरने के बाद संग्राहक रुक जाएगा!
इसका मतलब है कि जितना अधिक आप MAX_RESULTS चुनते हैं उतना ही बेहतर खोज परिणाम बन जाते हैं। लेकिन यह केवल तभी प्रासंगिक है जब आप बड़ी संख्या में हिट की उम्मीद करते हैं। दूसरी तरफ यदि आप "ल्यूक स्काईवाकर" की खोज करते हैं और आप MAX_RESULTS की तुलना में केवल एक हिट की उम्मीद करेंगे।
तो MAX_RESULTS को बदलकर लौटाए गए स्कोर डॉक्स को प्रभावित कर सकते हैं जैसे सॉर्टिंग किया जाएगा एकत्रित हिट पर। यह व्यावहारिक रूप से MAX_RESULTS को एक आकार में सेट करना है जो इतना बड़ा है कि मानव उपयोगकर्ता किसी विशिष्ट दस्तावेज़ को याद करने के लिए बहस नहीं कर सकता है। यह अवधारणा SQL डेटाबेस के व्यवहार के विपरीत पूरी तरह से विपरीत है, जो हमेशा पूर्ण डेटा पूल पर विचार करती है।
लेकिन लुसीन भी एक और तंत्र का समर्थन करता है। आप कलेक्टर के लिए MAX_RESULTS को परिभाषित करने के बजाय, वैकल्पिक रूप से उस समय की परिभाषा को परिभाषित कर सकते हैं जब आप परिणाम के लिए प्रतीक्षा करना चाहते हैं। तो उदाहरण के लिए आप परिभाषित कर सकते हैं कि आप हमेशा 300ms के बाद कलेक्टर को रोकना चाहते हैं। प्रदर्शन समस्याओं के लिए अपने आवेदन की रक्षा के लिए यह एक अच्छा तरीका है। लेकिन यदि आप यह सुनिश्चित करना चाहते हैं कि आप सभी प्रासंगिक दस्तावेज़ों की गणना करें, तो आपको MAX_RESULTS के लिए पैरामीटर सेट करना होगा या अधिकतम प्रतीक्षा समय को अंतहीन मान पर सेट करना होगा।
हाय, क्या आप लुसीन 4.x में अंकन के बारे में समझा सकते हैं और मुझे भी एक ही समस्या का सामना करना पड़ रहा है .. –
मैं ऊपर दिए गए अनुच्छेद में चर्चा के दृष्टिकोण का उपयोग कर रहा हूं। यह बहुत गहरी पेजिंग को छोड़कर काफी अच्छा प्रदर्शन करता है (कोई आश्चर्य नहीं)। – hudsonb