2013-09-01 9 views
5

ल्यूसीन संस्करण 3.9 तक एक फ़ील्ड इंडेक्सिंग को नियंत्रित करने के लिए कैसे करें, हम FIELD.INDEX.NO या FIELD.INDEX.ANALYZED इत्यादि का उपयोग कर किसी इंडेक्स को इंडेक्स करने के लिए इंडेक्स या निर्दिष्ट नहीं कर सकते हैं लेकिन लुसीन 4.0 में कोई नहीं है कन्स्ट्रक्टर उपलब्ध है, जिसमें हम इसे परिभाषित कर सकते हैं। हम इस संस्करण में अनुक्रमण को कैसे नियंत्रित करते हैं?ल्यूसीन 4.0

मेरा मतलब है अगर मैं चाहता हूँ एक क्षेत्र "नाम" सूचकांक में संग्रहीत करने के लिए, लेकिन यह सूचकांक नहीं चाहता है, तो मैं कैसे यह Lucene 4.0 में कर सकते हैं?

उत्तर

13

Field.Index तर्क लेने वाले निर्माता उपलब्ध हैं, लेकिन 4.0 में बहिष्कृत हैं, और इनका उपयोग नहीं किया जाना चाहिए। इसके बजाय, आप कैसे एक क्षेत्र अनुक्रमणित है को नियंत्रित करने के Field की उपवर्गों दिखना चाहिए।

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

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

  • StoredField एक संग्रहीत फ़ील्ड है जो बिल्कुल अनुक्रमित नहीं है (और इसलिए, खोजने योग्य नहीं है)।

StoredField अलावा, इनमें से प्रत्येक एक निर्माता तर्क, Lucene 3.6 के समान के रूप में एक Field.Store मान प्रदान किया जा सकता है। "अलग IndexableFieldType फील्ड उदाहरणों से"

+0

जवाब के लिए धन्यवाद:

इस परिवर्तन के बारे में अधिक जानकारी के लिए, एक नज़र Lucene Migration Guide पर लेते हैं, विशेष रूप से वर्गों शीर्षक से। यह सहायक था। एक और चीज जो हम कर सकते हैं वह एक नया फील्ड टाइप बनाना और उपलब्ध विधियों, setIndexed(), setStored() इत्यादि का उपयोग करके हमारी आवश्यकताओं को सेट करना है और फिर हम इस फील्ड टाइप ऑब्जेक्ट को फील्ड कन्स्ट्रक्टर में पास कर सकते हैं। –

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