अपडेट करने के बाद दस्तावेज़ नहीं ढूंढ सकते हैं ऐसा लगता है कि जब भी मैं इंडेक्स में मौजूदा दस्तावेज़ अपडेट करता हूं (डिलीट/एड के लिए समान व्यवहार), तो यह टर्मक्वायर के साथ नहीं मिल सकता है। यहां एक छोटा स्निपेट है:ल्यूसीन
iw = new IndexWriter (निर्देशिका, कॉन्फ़िगरेशन);
Document doc = new Document();
doc.add(new StringField("string", "a", Store.YES));
doc.add(new IntField("int", 1, Store.YES));
iw.addDocument(doc);
Query query = new TermQuery(new Term("string","a"));
Document[] hits = search(query);
doc = hits[0];
print(doc);
doc.removeField("int");
doc.add(new IntField("int", 2, Store.YES));
iw.updateDocument(new Term("string","a"), doc);
hits = search(query);
System.out.println(hits.length);
System.out.println("_________________");
for(Document hit : search(new MatchAllDocsQuery())){
print(hit);
}
यह निम्न सांत्वना उत्पादन का उत्पादन:
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<string:a>
stored<int:1>
________________
0
_________________
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<string:a>
stored<int:2>
________________
ऐसा लगता है कि अद्यतन के बाद, सूचकांक में दस्तावेज़ (बजाय नया दस्तावेज़) और MatchAllDocsQuery द्वारा दिया जाता है, लेकिन नहीं कर सकते एक TermQuery द्वारा पाया जा सकता है।
पूर्ण नमूना कोड http://pastebin.com/sP2Vav9v
इसके अलावा में उपलब्ध, यह केवल तब होता है (दूसरा काम नहीं कर रहा खोज) जब StringField मूल्य विशेष वर्ण हैं (उदाहरण के लिए फ़ाइल:/एफ: /)।
क्या आप 'iw.commit()' नहीं खो रहे हैं? – mindas
कुछ भी नहीं बदलता है। इसे अजीब कोशिश की। साथ ही, खोज प्रत्येक बार लेखक से एक नया पाठक खुलती है: DirectoryReader reader = DirectoryReader.open (iw, true); – Michael
मुझे एक समान समस्या का सामना करना पड़ रहा है। लुसीन का कौन सा संस्करण यह है? – carlspring