ल्यूसीन में अंकन को प्राप्त करने के तरीके के बारे में सोचते हुए, क्योंकि यह मूल रूप से पेजिनेशन का समर्थन नहीं करता है। मुझे मूल रूप से 'शीर्ष 10 प्रविष्टियों' (कुछ पैरामीटर के आधार पर) की खोज करने की आवश्यकता है, फिर 'अगली 10 प्रविष्टियां' और इसी तरह। और साथ ही मैं नहीं चाहता कि लुसीन स्मृति को हल करे। सलाह का कोई भी टुकड़ा सराहना की जाएगी। अग्रिम धन्यवाद।लुसीन में अंकन कैसे प्राप्त करें?
उत्तर
आप अपनी खुद की पेजिंग तंत्र, कि नीचे करने के लिए कुछ इसी तरह लागू करने के लिए की आवश्यकता होगी।
IList<Document> luceneDocuments = new List<Document>();
IndexReader indexReader = new IndexReader(directory);
Searcher searcher = new IndexSearcher(indexReader);
TopDocs results = searcher.Search("Your Query", null, skipRecords + takeRecords);
ScoreDoc[] scoreDocs = results.scoreDocs;
for (int i = skipRecords; i < results.totalHits; i++)
{
if (i > (skipRecords + takeRecords) - 1)
{
break;
}
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
आप पाएंगे कि scoreDocs सरणी पुनरावृत्ति हल्के हो जाएगा के रूप में डेटा सूचकांक के भीतर निहित वास्तव में नहीं किया जाता है जब तक searcher.Doc विधि कहा जाता है।
कृपया ध्यान दें कि इस उदाहरण Lucene.NET 2.3.2 के एक थोड़ा संशोधित संस्करण के खिलाफ लिखा गया था, लेकिन बुनियादी प्रिंसिपल Lucene के किसी भी हाल के संस्करण के खिलाफ काम करना चाहिए।
मैं सहमत हूं , परिणामस्वरूप ल्यूसीन डेटाबेस के बारे में पूछते समय परिणाम के रूप में भारी नहीं होते हैं, इसलिए आप प्रदर्शन समस्याओं से निपटने के बिना कस्टम पेजिनेशन विधियों को आसानी से कार्यान्वित कर सकते हैं –
समस्या तब होती है जब आप उच्च पेजिनेशन नंबर खोज के साथ बड़े डेटा सेट की खोज धीमे हो रहे हैं । ऐसा लगता है कि आप किसी चीज की खोज करते हैं और फिर खोज का एक हिस्सा छोड़ देते हैं। – Ruwantha
पाश का एक और संस्करण, केन के कोड स्निपेट के साथ जारी रखने;
....................
ScoreDoc[] scoreDocs = results.scoreDocs;
int pageIndex = [User Value];
int pageSize = [Configured Value];
int startIndex = (pageIndex - 1) * pageSize;
int endIndex = pageIndex * pageSize;
endIndex = results.totalHits < endIndex? results.totalHits:endIndex;
for (int i = startIndex ; i < endIndex ; i++)
{
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
मैं पेजिनेट करने के लिए निम्न तरीके का उपयोग करता हूं, यह किसी की मदद कर सकता है। यदि आप एक बेहतर रणनीति जानते हैं, खासकर प्रदर्शन दृश्य बिंदु से, कृपया साझा करें।
public TopDocs search(String query, int pageNumber) throws IOException, ParseException {
Query searchQuery = parser.parse(query);
TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
int startIndex = (pageNumber - 1) * MyApp.SEARCH_RESULT_PAGE_SIZE;
searcher.search(searchQuery, collector);
TopDocs topDocs = collector.topDocs(startIndex, MyApp.SEARCH_RESULT_PAGE_SIZE);
return topDocs;
}
- 1. कॉच डीबी में अंकन?
- 2. लुसीन
- 3. लुसीन खोज परिणामों में समूह कैसे करें?
- 4. लुसीन
- 5. लुसीन
- 6. लुसीन
- 7. लुसीन
- 8. कैसे करूं अंकन
- 9. mongoengine का उपयोग करके अंकन कैसे करें?
- 10. क्लोजर में अंकन
- 11. लुसीन
- 12. लुसीन
- 13. लुसीन
- 14. लुसीन
- 15. लुसीन और जेपीए का उपयोग कैसे करें?
- 16. एक वितरित वातावरण में लुसीन प्रदर्शन में सुधार कैसे करें?
- 17. Grails में अंकन
- 18. अंकन (Kaminari)
- 19. झिलमिलाहट के बिना उल्का में अंकन कैसे करें?
- 20. लुसीन क्वेरीपर्स में दो फ़ील्ड कैसे निर्दिष्ट करें?
- 21. mahout लुसीन दस्तावेज़ क्लस्टरिंग कैसे?
- 22. लुसीन और लुसीन में रूसी भाषा के लिए विश्लेषक।
- 23. एक विश्वसनीय सेवा में अंकन
- 24. लुसीन इंडेक्सशियर
- 25. लुसीन क्वेरीरीसर
- 26. लुसीन प्रदर्शन
- 27. MySQL SQL_CALC_FOUND_ROWS और अंकन
- 28. एक आरईएसटी वेब ऐप में अंकन
- 29. लुसीन रीयल-टाइम इंडेक्सिंग?
- 30. परिणाम से अंकन
जांच इस पोस्ट में अनुमोदित जवाब: [Lucene 4 पृष्ठांकन] [1] [1]: http://stackoverflow.com/a/24533377/1080485 –