Lucene org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine: XX 问题解决

在集成Lucene进行全文检索时遇到LockObtainFailedException错误,原因是索引目录中只有一个IndexWriter可同时打开。当多线程并发操作,线程1的IndexWriter未关闭时,线程2尝试写入索引,导致锁冲突。解决办法是确保正确管理和同步线程间的IndexWriter关闭操作。
摘要由CSDN通过智能技术生成

最近在集成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 ;
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值