我做了个索引监听程序,同时进行追加索引和更新索引(先删除后追加),追加索引没问题,但增加索引却出现两个cfs文件,数据也没有删除,不知道什么问题。代码如下:
private List<Message> deleteOldIndex(List<Message> msgs) throws StaleReaderException, CorruptIndexException, LockObtainFailedException, IOException {
IndexReader indexReader = IndexReader.open(directory, false);
for (int i = 0; i < msgs.size(); i++) {
indexReader.deleteDocument(msgs.get(i).getDocId());
}
indexReader.close();
return msgs;
}
更新索引是先删除再追加新数据,可更新索引时没有删除原先的数据,出现了数据重复。
我在想是不是因为多线程同时访问一个索引文件的原因,那多出来的索引文件大小一模一样。
请问有什么方法可以消除这种情况? 谢谢了