我对Apachelucene非常熟悉,我正在尝试使用4.7.0构建索引。我能够很好地索引文档(这些是阿拉伯语文档),但是我在删除文档时遇到了问题。我用于删除文档的代码如下。
public void deleteFile(String filePath) {
System.out.println("Reached at deleting a file" );
try {
Term term = new Term("path", filePath);
writer.deleteDocuments(term);
writer.commit();
} catch (IOException e) {
System.out.println(" caught a " + e.getClass() + "\n with message: " + e.getMessage());
}
}
其中“路径”是保存语料库文件夹中的文件路径的字段。
下面是我如何索引路径字段
doc.add(new StringField("path", file.getPath(), Field.Store.YES));
当我尝试删除我使用上述方法编制索引的任何文档时,它都不起作用,我仍然可以使用Luke看到被删除的文档仍然是索引的一部分。有人可以告诉我我做错了什么吗?
也许forceMergeDelete解决了这个问题。您必须在调用deleteDocuments后使用它。