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

标签 lucene lucene.net

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

在我尝试使用以下代码创建索引时抛出此异常:

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

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

最佳答案

有几种可能的原因:

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

  • 提交/处置作家:
    writer.Optimize();
    writer.Commit();
    writer.Dispose();
    

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

    我希望这能解决你的问题

    关于lucene - "Lock obtain timed out exception"没有 "write.lock"文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285134/

    相关文章:

    java - Lucene 6中如何获取文档的字段范数?

    java - 杜克大学 - org.apache.lucene.analysis.standard.StandardAnalyzer

    c# - 写入后是否必须优化lucene索引?

    c# - 如何在 Lucene.NET 中搜索 Field.Index.NOT_ANALYZED 字段?

    c# - 字符串到 Lucene 查询

    sorting - 基于出现的 Elasticsearch 衰减分数

    java - 从 Solr 组件代码访问停用词列表

    java - Lucene IndexReader 升级

    .net - 与 Lucene .Net 相比,使用 solr 有什么优势?

    .net - Lucene.Net 突出显示不起作用