我想用java删除lucene 2.4中的一个文档。我的代码是
Directory directory = FSDirectory.getDirectory("c:/index");
IndexReader indexReader = IndexReader.open(directory);
System.out.println("num="+indexReader.maxDoc());
indexReader.deleteDocuments(new Term("name","1"));
System.out.println("num="+indexReader.maxDoc());
output
num=1
num=1
最佳答案
在我看来,最好使用 Indexwriter 来删除文档,因为 Indexreader 缓冲删除并且不会将更改写入索引,直到 close()被召唤。除非您使用相同的引用进行搜索。
Generally it's best to use IndexWriter for deletions, unless
you must delete by document number
you need your searches to immediately reflect the deletions or
you must know how many documents were deleted for a given deleteDocuments invocation
我可以看到您想要内存中文档的 maxdoc 值,因此这是使用 Indexwriter 的更好方法
所以你的问题的答案是
您应该关闭 Indexreader 对象或使用 Indexwriter 进行删除
关于java - 为什么 'delete document' 在 lucene 2.4 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361213/