मेरे पास एक दस्तावेज़ के साथ ल्यूसीन इंडेक्स में संग्रहीत कुछ दस्तावेज़ हैं। मैं इंडेक्स में संग्रहीत सभी डॉकआईड्स प्राप्त करना चाहता हूं। एक समस्या भी है। दस्तावेजों की संख्या लगभग 300 000 है इसलिए मैं इस दस्तावेज़ को आकार 500 के हिस्सों में प्राप्त करना पसंद करूंगा। क्या ऐसा करना संभव है?लुसीन इंडेक्स में संग्रहीत दस्तावेज़ों के माध्यम से पुन: प्रयास करना संभव है?
उत्तर
IndexReader reader = // create IndexReader
for (int i=0; i<reader.maxDoc(); i++) {
if (reader.isDeleted(i))
continue;
Document doc = reader.document(i);
String docId = doc.get("docId");
// do something with docId here...
}
दस्तावेज़ संख्या (या आईडी) 0 से IndexReader.maxDoc() - 1 के बाद की संख्या होगी। ये संख्याएं लगातार नहीं हैं और केवल खुले इंडेक्स रीडर के लिए मान्य हैं। आप की जांच कर सकता है, तो दस्तावेज़ IndexReader.isDeleted (पूर्णांक documentNumber) विधि के साथ हटा दिया जाता है
Lucene 4
जानकारी के लिए इस पेज परBits liveDocs = MultiFields.getLiveDocs(reader);
for (int i=0; i<reader.maxDoc(); i++) {
if (liveDocs != null && !liveDocs.get(i))
continue;
Document doc = reader.document(i);
}
देखें Lucene-2600: https://lucene.apache.org/core/4_0_0/MIGRATE.html
यह किसी अन्य उपयोगकर्ता द्वारा वापस लुढ़का गया था लेकिन मूल संपादक सही था, liveDocs शून्य हो सकता है – bcoughlan
यदि आप उपरोक्त उदाहरणों में .document (i) का उपयोग करते हैं और हटाए गए दस्तावेज़ों पर छोड़ देते हैं तो सावधान रहें यदि आप पेजिंग परिणामों के लिए इस विधि का उपयोग करते हैं। i.e .: आपके पास 10 दस्तावेज़/प्रति पृष्ठ सूची है और आपको दस्तावेज़ प्राप्त करने की आवश्यकता है। पृष्ठ 6 के लिए। आपका इनपुट ऐसा कुछ हो सकता है: ऑफ़सेट = 60, गिनती = 10 (60 से 70 के दस्तावेज़)।
IndexReader reader = // create IndexReader
for (int i=offset; i<offset + 10; i++) {
if (reader.isDeleted(i))
continue;
Document doc = reader.document(i);
String docId = doc.get("docId");
}
आप हटाए गए लोगों के साथ कुछ समस्याएं हैं जाएगा क्योंकि आप से शुरू नहीं करना चाहिए ऑफसेट = 60 है, लेकिन से ऑफसेट = 60 + हटाए गए दस्तावेजों से पहले 60
एक वैकल्पिक मैंने पाया दिखाई की संख्या ऐसा कुछ है:
is = getIndexSearcher(); //new IndexSearcher(indexReader)
//get all results without any conditions attached.
Term term = new Term([[any mandatory field name]], "*");
Query query = new WildcardQuery(term);
topCollector = TopScoreDocCollector.create([[int max hits to get]], true);
is.search(query, topCollector);
TopDocs topDocs = topCollector.topDocs(offset, count);
नोट: [[]] के बीच टेक्स्ट को अपने मूल्यों के साथ बदलें। 1.5 मिलियन प्रविष्टियों के साथ बड़ी सूचकांक पर इसे चलाएं और एक सेकंड से भी कम समय में यादृच्छिक 10 परिणाम प्राप्त करें। सहमत धीमी है लेकिन कम से कम आप हटाए गए दस्तावेज़ों को अनदेखा कर सकते हैं यदि आपको पेजिनेशन की आवश्यकता है।
वहाँ एक प्रश्न वर्ग MatchAllDocsQuery
नाम पर है, मुझे लगता है कि इस मामले में इस्तेमाल किया जा सकता:
Query query = new MatchAllDocsQuery();
TopDocs topDocs = getIndexSearcher.search(query, RESULT_LIMIT);
- 1. शब्द दस्तावेज़ों को संग्रहीत करना
- 2. ल्यूसीन इंडेक्स में एस्ट्रोफ़े के साथ शब्दों को संग्रहीत करना
- 3. सी # मैं रजिस्ट्री के माध्यम से कैसे पुन: प्रयास करूं?
- 4. क्या सोलर/लुसीन में कोसाइन समानता मॉडल करना संभव है?
- 5. लुसीन में नकारात्मक क्वेरी बूस्ट का उपयोग करना संभव है?
- 6. जावमेल के माध्यम से MySQL तालिका में डेटा संग्रहीत करना
- 7. सबक्वायरी का पुन: उपयोग करना संभव है?
- 8. क्या ElasticSearch में नेस्टेड दस्तावेज़ों को सॉर्ट करना संभव है?
- 9. ल्यूसीन इंडेक्स में दस्तावेज़ों के सबसेट के लिए मुझे शीर्ष शर्तें कैसे मिल सकती हैं?
- 10. लुसीन
- 11. मैं जावा स्ट्रिंग के यूनिकोड कोडपॉइंट्स के माध्यम से कैसे पुन: प्रयास कर सकता हूं?
- 12. मैं जावा में किसी निर्देशिका में फ़ाइलों के माध्यम से कैसे पुन: प्रयास करूं?
- 13. मैं टी-एसक्यूएल में एक्सएमएल फ़ील्ड के नोड्स के माध्यम से कैसे पुन: प्रयास करूं?
- 14. आप फोर्टन में एक सरणी के माध्यम से कैसे पुन: प्रयास करते हैं?
- 15. मैं PHP में डोम तत्वों के माध्यम से कैसे पुन: प्रयास करूं?
- 16. मैं स्ट्रिंग के माध्यम से कैसे पुन: प्रयास कर सकता हूं और इंडेक्स (वर्तमान स्थिति) को भी जान सकता हूं?
- 17. मैं सामान्य लिस्प में निर्देशिका के माध्यम से कैसे पुन: प्रयास करूं?
- 18. AFNetworking: पुन: प्रयास आपरेशन
- 19. लुसीन
- 20. क्या रिशेर्पर के माध्यम से कोड सॉर्ट करना संभव है?
- 21. क्या JSONArray के माध्यम से पुनरावृत्त करना संभव है?
- 22. मैं .gif छवि में प्रत्येक पिक्सेल के माध्यम से कैसे पुन: प्रयास कर सकता हूं?
- 23. लुसीन
- 24. मैं jQuery का उपयोग कर div के बाल तत्वों के माध्यम से कैसे पुन: प्रयास करूं?
- 25. विरासत के माध्यम से ग्राफिक्स ऑब्जेक्ट्स की कार्यक्षमता का विस्तार करना संभव है?
- 26. लुसीन में, मेरे बूस्ट और असंबद्ध दस्तावेज़ों को एक ही स्कोर क्यों मिलता है?
- 27. पुन: प्रयास करें ग्रूवी
- 28. मैं JSON.NET के साथ नेस्टेड शब्दकोशों के माध्यम से कैसे पुन: प्रयास कर सकता हूं?
- 29. लुसीन
- 30. लुसीन क्वेरी ऑब्जेक्ट्स का पुन: उपयोग
क्या होगा अगर (reader.isDeleted (i)) याद आ रही है होता है? –
हटाए गए() चेक के बिना, आप उन दस्तावेज़ों के लिए आईडी आउटपुट करेंगे जिन्हें पहले से हटाया गया था – bajafresh4life
ऊपर से टिप्पणी पूरी करने के लिए। इंडेक्स में परिवर्तन तब किया जाता है जब इंडेक्स को फिर से खोल दिया जाता है .इस हटाया गया (i) यह गारंटी देना आवश्यक है कि दस्तावेज मान्य हैं। –