java - 为什么 'delete document' 在 lucene 2.4 中不起作用?

标签 java lucene

我想用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()被召唤。除非您使用相同的引用进行搜索。

Lucene wiki

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/

相关文章:

java - 在java中将实数隔离在复数中

java - 检查输入类型...如何?

java - 找不到类 : Deploying on Glassfish

lucene - 使用lucene进行模糊搜索

java - JPanel、BorderLayout 工作错误

java - 使用 iText 和 apache velocity template(.vm) 生成 PDF 文件

java - 如何使用更新信息以编程方式获取 Java 版本

java - 我可以向 Solr 服务器动态提供 solrconfig.xml 和 schema.xml 文件吗?

web-services - Solr查询语法

java - 通过 Solrj 查询 Solr : Basics