Note: I'm bound to lucene 3.0.3 for the context of this question, but I would be interested to know if newer versions would help me here.
I have an existing document in my directory that has one regular String field and one numeric field. I naively thought I could update that document to change the String field with code like this: FSDirectory dir = FSDirectory.open(...); IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_30), MaxFieldLength.UNLIMITED); // doc has 2 fields, one String and the other numeric Document doc = new Document(); doc.add(new Field("string", "value", Store.YES, Index.ANALYZED_NO_NORMS)); NumericField nf = new NumericField("numeric", Field.Store.YES, true); nf.setIntValue(42); doc.add(nf); writer.addDocument(doc); writer.commit(); // make sure we can query on the numeric field IndexSearcher searcher = new IndexSearcher(dir); TopDocs docs = searcher.search(new TermQuery(new Term("numeric", NumericUtils.intToPrefixCoded(42))), 1); if (docs.totalHits != 1) { throw new AssertionError(); } doc = searcher.doc(docs.scoreDocs[0].doc); searcher.close(); // update document with new value for string field doc.removeField("string"); doc.add(new Field("string", "value2", Store.YES, Index.ANALYZED_NO_NORMS)); writer.updateDocument(new Term("string", "value"), doc); writer.commit(); // search again searcher = new IndexSearcher(dir); docs = searcher.search(new TermQuery(new Term("numeric", NumericUtils.intToPrefixCoded(42))), 1); if (docs.totalHits != 1) { throw new AssertionError(docs.totalHits); } That doesn't seem to work however. It seems I need to get the NumericField rematerialized in the document passed to updateDocument(). I was hoping to avoid that if possible so I'm looking for any suggestions someone might offer. --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org