最近在集成Lucene做全文你检索,在生成索引文件时,遇到这样一个报错:
Lucene org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine: E:\lucene\write.lock
首先排查出现这样报错的原因:
Lucene当中,一个索引目录只能打开一个IndexWriter, 当在并发操做时,便容易出现线程1 IndexWriter 还未关闭,线程2开始了索引文档写入,也就是线程1的 Lucene 索引锁还未释放,线程2开始获取。
造成这个这个异常的代码:
@Override public void updateIndex(Api content, Directory dir) throws IOException, ParseException { if (null == content || null == dir) { logger.info("no content to update for index, or Director is invalide"); return ; }