如何使用Lucene中的术语删除文档

3

我正在尝试使用Lucene索引中的术语来删除文档。但是,我下面编写的代码不起作用。是否有任何建议可以在Lucene索引中执行删除功能?

public class DocumentDelete {
public static void main(String[] args) {
File indexDir = new File("C:/Users/Raden/Documents/lucene/LuceneHibernate/adi");
Term term = new Term(FIELD_PATH, "compatible");
Directory directory = FSDirectory.getDirectory(indexDir);
IndexReader indexReader = IndexReader.open(directory);
indexReader.deleteDocuments(term);
indexReader.close();        
}
}

你的代码看起来不错,嗯... - Adrian Smith
代码看起来没问题。也许索引有一个锁定文件,你应该删除它。如果这不起作用,请在你的问题中详细说明你如何看到删除失败。 - Yuval F
这个术语是否与任何文档匹配?首先搜索该术语以查看是否返回任何结果。 - bajafresh4life
同意,除非FIELD_PATH实际上在您的代码中,而不是一个有效的字段字符串,例如“title”等。 - recursive9
所以无论如何,我已经采取删除Lucene索引中文档的方法是使用一个名为Luke的工具http://code.google.com/p/luke/。因为我有点迷失在使用Lucene API来删除它。但也许如果你够友善,你可以给我一个删除Lucene索引中文档的示例源代码。 :-) - jacobian
1个回答

2
IndexReader indexReader = IndexReader.open(directory); // this one uses default readonly mode

请使用以下内容代替:
IndexReader indexReader = IndexReader.open(directory, false); // this will open the index in edit mode and you can delete the index. . . 

所以你不需要任何额外的工具来删除索引内容...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接