So IIUC the information re number of deleted documents is only visible
temporarily and only when there are many documents, right?
Thanks
Michael
Am 08.12.22 um 14:21 schrieb Uwe Schindler:
If this is a reader with only a few documents the likelyness of all
deletes being applied while closing is high.
Uwe
Am 08.12.2022 um 11:44 schrieb Michael Wechner:
My code at the moment is as follows:
Directory dir = FSDirectory.open(Paths.get(vectorIndexPath));
IndexReader reader =
DirectoryReader.open(FSDirectory.open(Paths.get(vectorIndexPath)));
int numberOfDocsBeforeDeleting = reader.numDocs();
log.info("Number of documents: " + numberOfDocsBeforeDeleting);
log.info("Number of deleted documents: " + reader.numDeletedDocs());
reader.close();
log.info("Delete document with path '" + uuid +"' from index '" +
vectorIndexPath +"' ...");
IndexWriterConfig iwc =new IndexWriterConfig();IndexWriter writer
=new IndexWriter(dir, iwc);
Term term =new Term(PATH_FIELD, uuid);
writer.deleteDocuments(term);writer.close();
reader =
DirectoryReader.open(FSDirectory.open(Paths.get(vectorIndexPath)));
int numberOfDocsAfterDeleting = reader.numDocs();
log.info("Number of documents: " + numberOfDocsAfterDeleting);
log.info("Number of deleted documents: " +
(numberOfDocsBeforeDeleting - numberOfDocsAfterDeleting));
// TODO: Not sure whether the method numDeletedDocs() makes sense
here log.info("Number of deleted documents: " +
reader.numDeletedDocs()); reader.close();
whereas this code always returns 0, whereas
numberOfDocsBeforeDeleting - numberOfDocsAfterDeleting
produces the correct result.
Should I open the reader before closing the writer?
Thanks
Michael
Am 08.12.22 um 11:36 schrieb Uwe Schindler:
You have to reopen the index reader to see deletes from the
indexwriter.
Am 08.12.2022 um 10:32 schrieb Hrvoje Lončar:
Did you call this method before or after commit method?
My wild guess would be that you can count deleted documents inside
transaction only.
On Thu, Dec 8, 2022 at 12:10 AM Michael Wechner
<michael.wech...@wyona.com>
wrote:
Hi
I am using Lucen 9.4.2 vector search and everything seems to work
fine,
except that when I delete some documents from the index, then the
method
https://lucene.apache.org/core/9_0_0/core/org/apache/lucene/index/IndexReader.html#numDeletedDocs()
always returns 0, whereas I would have expected that it would
return the
number of documents which I deleted from the index.
IndexReader.numDocs() returns the correct number though.
I guess I misunderstand the javadoc and in particular the note
"*NOTE*:
This operation may run in O(maxDoc)."
Does somebody explain in more detail what this method is doing?
Thanks
Michael
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org