没有"write.lock"文件的"Lock obtain timed out exception"



我得到Lock obtain timed out索引文件夹完全空的异常。

在我尝试使用以下代码创建索引的那一刻,会引发此异常:

IndexWriter writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED)

我怎么可能解决这个错误?

有几种可能的原因:

  1. 您的目录没有足够的访问权限。要解决此问题,请右键单击目录>properties>security>确保您的进程IIS_IUSRS具有权限
  2. 另一个进程同时使用该目录。使用锁定猎人检测哪个进程正在使用此文件
  3. 目录中的 write.lock 是一个孤立文件,最初它是创建的,但由于进程被杀死,它一直留在那里。
  4. 您没有优化/提交/处置您打开的编写器

提交/释放编写器:

writer.Optimize();
writer.Commit();
writer.Dispose();

我遇到了这个问题,然后有一个IProviderContext的实例,它没有被优化/提交/处置。

我希望这能解决你的问题

最新更新