All, I’m missing a not so secret "secret sauce" somewhere in my simple code (say that 5 times real fast - no not “that”). Am trying to show the efficiency increase of delete/create a document in lucene (the old way of updating a document) versus the newly supported mode of being able to update a specific field. Unfortunately, despite my best efforts, I can’t seem to get the field to update.
Below are the simplified portions of relevant code: Setup of my index: final Path path = FileSystems.getDefault().getPath(indexDirectoryPath); final Directory indexDirectory = new SimpleFSDirectory(path); final IndexWriterConfig conf = new IndexWriterConfig(new StandardAnalyzer()); writer = new IndexWriter(indexDirectory, conf); Creating the document in my lucene index: accumulator += 1l; final Document document = new Document(); final Field contentField = new TextField(LuceneConstants.CONTENTS, new FileReader(file)); final Field fileNameField = new StringField(LuceneConstants.FILE_NAME, file.getName(), Field.Store.YES); final Field filePathField = new StringField(LuceneConstants.FILE_PATH, file.getCanonicalPath(), Field.Store.YES); final Field fileEntryOrderField = new LongField(LuceneConstants.ENTRY_ORDER, accumulator, Field.Store.YES); final Field fileEntryOrderNumericDocValuesField = new NumericDocValuesField(LuceneConstants.ENTRY_ORDER, accumulator); document.add(contentField); document.add(fileNameField); document.add(filePathField); document.add(fileEntryOrderField); document.add(fileEntryOrderNumericDocValuesField); writer.addDocument(document); writer.commit(); writer.close(); Updating the document in my lucene index String searchTermString = "record2.txt”; String field = LuceneConstants.ENTRY_ORDER; long value = 100l; final Term term = new Term(LuceneConstants.FILE_NAME,searchTermString); writer.updateNumericDocValue(term, field, value); writer.commit(); writer.close(); I expect the value of the numeric field to increase to zero, but I’m not seeing it when i retrieve the document at a later step. From what I have observed in my debugger, the updateNumericDocValue method in IndexWriter (lines 1509 through 1521 accepts the fields as pre-existing (passes the if statement that ensures that the document has the field), but then is not gated into “processEvents(true,false);” step as the line 1515 docWriter.updateDocValues(….) returns false. can’t seem to pin down why that is happening. What am I missing? SCott