2008-12-08 14 views
18

मैं वेब अनुप्रयोग में खोज परिणामों को दिखाने के लिए लुसीन का उपयोग कर रहा हूं। मैं इसे दिखाने के लिए कस्टम पेजिंग भी हूं। खोज परिणाम 5000 से 10000 या उससे अधिक के बीच भिन्न हो सकते हैं। क्या कोई मुझे पेजिंग और खोज परिणामों को कैशिंग करने के लिए सबसे अच्छी रणनीति बता सकता है?पेजिंग लुसीन के खोज परिणाम

+2

इस उपयोगकर्ता को फिर से पूछ बार-बार एक या समान सवाल किया जा रहा है: http: // stackoverflow। कॉम/उपयोगकर्ता/41625/meyahoocomaodzxyowykprbavs5sf701zowgzpc3svjv8 उत्तर देने के लिए समय लेने से पहले पोस्टिंग रिकॉर्ड देखें ... –

उत्तर

32

मैं आपको सलाह दूंगा कि कम से कम आवेदन स्तर पर नतीजे न करें। लॉकिन को एक बॉक्स पर चलाना जिसमें बहुत सारी मेमोरी है, ऑपरेटिंग सिस्टम इसके फाइल कैश के लिए उपयोग कर सकता है हालांकि मदद करेगा।

बस प्रत्येक पृष्ठ के लिए एक अलग ऑफसेट के साथ खोज दोहराएं। कैशिंग ने कहा कि अंत में, प्रदर्शन को कमजोर करता है। हमारे पास सैकड़ों समवर्ती उपयोगकर्ता 40 मिलियन से अधिक दस्तावेज़ों की अनुक्रमणिका खोज रहे हैं। स्पष्ट कैशिंग का उपयोग किये बिना एक सेकंड से भी कम समय में खोज पूरी होती है।

का उपयोग Hits वस्तु खोज से लौटे, तो आप इस तरह एक पेज के लिए दस्तावेजों का उपयोग कर सकते हैं:

Hits hits = searcher.search(query); 
int offset = page * recordsPerPage; 
int count = Math.min(hits.length() - offset, recordsPerPage); 
for (int i = 0; i < count; ++i) { 
    Document doc = hits.doc(offset + i); 
    ... 
} 
+0

क्या आपके पास अभी भी कोई प्रदर्शन समस्या नहीं है? –

+0

हैलो एरिक्सन .. क्या आप कृपया मुझे बता सकते हैं कि किस संस्करण से ल्यूसीन खोज विधि का केवल 1 तर्क लेते हुए खोज विधि का समर्थन करता है .. और इस समाधान के साथ भी सॉर्टिंग संभव है। ??? –

+0

@AshaKoshti हमेशा के लिए? यह 2004 में जारी 1.4.3 में था। मुझे अभिलेखागार में उससे पुराना संस्करण नहीं मिल रहा है। हां, 'खोजकर्ता' पर भी एक 'खोज (क्वेरी, सॉर्ट)' अधिभार है। – erickson

संबंधित मुद्दे