आप enums कैसे प्राप्त बदल गया है। प्राथमिक प्रवेश बिंदु Fields
वर्ग है। क्या आप जानते हैं आपके पाठक एक एकल खंड पाठक है, तो कर इस: पाठक बहु खंड हो सकता है
Fields fields = reader.Fields();
if (fields != null) {
...
}
, तो आप इस कार्य करना होगा:
Fields fields = MultiFields.getFields(reader);
if (fields != null) {
...
}
fields
null
हो सकता है (उदाहरण के लिए अगर पाठक के पास कोई फ़ील्ड नहीं है)।
ध्यान दें कि MultiFields
दृष्टिकोण MultiReaders
पर एक प्रदर्शन हिट जरूरत पर जोर देता है, क्योंकि यह संदर्भ/docs/मक्खी पर पदों को मर्ज करना होगा। यह आम तौर पर बजाय अनुक्रमिक पाठकों (उपयोग oal.util.ReaderUtil
) प्राप्त करने के लिए और फिर अपने आप को उन पाठकों के माध्यम से कदम, यदि आप कर सकते हैं (यह कैसे Lucene ड्राइव खोज है) बेहतर है।
आप एक SegmentReader
MultiFields.fields
को कहीं भी होगी बस वापसी reader.fields()
गुजरती हैं, इसलिए कोई प्रदर्शन उस मामले में मारा है।
बार जब आप एक गैर-शून्य फील्ड्स है आप यह कर सकते हैं:
Terms terms = fields.terms("field");
if (terms != null) {
...
}
terms
null
हो सकता है (उदाहरण के लिए यदि क्षेत्र मौजूद नहीं है)।
बार जब आप एक गैर null
शर्तें भी हो आप इस तरह एक enum प्राप्त कर सकते हैं:
TermsEnum termsEnum = terms.iterator();
लौटे TermsEnum
अशक्त नहीं होगा।
फिर आप .next()
TermsEnum
मैं सिर्फ इस सवाल का जवाब आप के बाद से यह भ्रामक और खोज और प्रश्न तैयार करने में जवाब खोजने के लिए गैर सहज ज्ञान युक्त हो सकता है चिह्नित करने के लिए इस सवाल का जवाब भाग ले जाया गया के माध्यम से कर सकते हैं। – MahNas92