2015-10-05 6 views
5

क्या कोई कृपया इस परिस्थिति के तहत समझाएगा कि के बजाय Field.Store.NO का उपयोग कर सकता हूं? मैं लुसीन के लिए बेहद नया हूं। और मैं एक दस्तावेज़ बनाने की कोशिश कर रहा हूं। मेरे मूल ज्ञान के अनुसार, मैंलुसीन फील्ड.स्टोर.वायईएस बनाम Field.Store.NO

doc.add(new StringField(fieldNameA,fieldValueA,Field.Store.YES)); 
doc.add(new TextField(fieldNameB,fieldValueB,Field.Store.YES)); 

उत्तर

9

ल्यूसीन में दस्तावेज़ को दो मूलभूत तरीके से लिखा जा सकता है।

  • अनुक्रमित - फ़ील्ड का विश्लेषण और अनुक्रमित किया गया है, और इसकी खोज की जा सकती है।
  • संग्रहीत - फ़ील्ड का पूरा पाठ संग्रहीत किया जाता है और खोज परिणामों के साथ वापस कर दिया जाएगा।

यदि कोई दस्तावेज़ अनुक्रमित है लेकिन संग्रहीत नहीं है, तो आप इसकी खोज कर सकते हैं, लेकिन यह खोज परिणामों के साथ वापस नहीं किया जाएगा।

एक उचित आम पैटर्न खोज के लिए लुसीन का उपयोग करना है, लेकिन केवल एक आईडी फ़ील्ड संग्रहीत किया जा रहा है जिसका उपयोग दस्तावेज़/रिकॉर्ड की पूर्ण सामग्री को पुनर्प्राप्त करने के लिए किया जा सकता है, उदाहरण के लिए, एक SQL डेटाबेस, एक फ़ाइल सिस्टम, या एक वेब संसाधन।

आप फ़ील्ड को स्टोर नहीं करना चुन सकते हैं जब वह फ़ील्ड केवल एक खोज उपकरण है, लेकिन आप इसे उपयोगकर्ता को नहीं दिखाएंगे, जैसे ध्वनि/मेटाफोन, या सामग्री फ़ील्ड का वैकल्पिक विश्लेषण।

+0

उत्तर के लिए धन्यवाद। सटीकता/पूर्णता के लिए: यदि मैं वापस चाहता हूं तो दस्तावेज़ ID है, तो मुझे 'Field.Store.NO' का उपयोग करना चाहिए: खोज किसी भी अंतर के अंतर के साथ आयोजित नहीं की जाएगी, लेकिन केवल दस्तावेज़ आईडी वापस आ जाएगा? क्या मुझे स्पष्ट रूप से 'fieldType.setIndexed (true) 'निर्दिष्ट करना होगा? और दस्तावेज़ आईडी बस 'scoreDoc.doc' है? –

+0

सही, पैटर्न के साथ, आपका दस्तावेज़ ID 'Store.YES' पर सेट किया गया एकमात्र फ़ील्ड हो सकता है। चाहे खेतों को संग्रहीत किया गया हो या नहीं, * पर * प्रभाव नहीं है कि किस दस्तावेज़ पर खोज करते समय मिलान किया जाता है, केवल जब आप एक दस्तावेज़ पुनर्प्राप्त करते हैं तो वापस लौटाया जाता है (ex. [indexSearcher.doc'] से पूर्व (https://lucene.apache.org/ कोर/5_3_0/कोर/index.html? org/अपाचे/Lucene/खोज/IndexSearcher.html))। पहचानकर्ता के लिए क्या उपयोग करना है, यदि आप बाहरी संसाधन से दस्तावेज़ की पहचान करने का प्रयास कर रहे हैं, तो मैं लुसीन के आंतरिक डॉकिड का उपयोग नहीं करता। डेटाबेस से एक कुंजी, या एक फ़ाइल सिस्टम पथ, या जो कुछ भी स्थिति के अनुरूप है का प्रयोग करें। – femtoRgon

+0

आपको आमतौर पर यह निर्दिष्ट करने की आवश्यकता नहीं है कि आप दस्तावेज़ को अनुक्रमित करना चाहते हैं या नहीं। 'टेक्स्टफिल्ल्ड', 'स्ट्रिंगफ़िल्ल्ड' इत्यादि। प्रत्येक के पास अपनी स्वयं की अंतर्निहित रणनीति है कि दस्तावेज़ का विश्लेषण कैसे किया जाना चाहिए ('टेक्स्टफिल्ड' को अनुक्रमित और विश्लेषण किया गया है, 'स्ट्रिंगफ़िल्ल्ड' को अनुक्रमित किया गया है लेकिन विश्लेषण नहीं किया गया है, 'स्टोर्डफ़िल्ल्ड' अनुक्रमित नहीं है)। – femtoRgon

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