【问题标题】:Lucene .NET IndexWriter lockLucene .NET IndexWriter 锁
【发布时间】:2012-09-04 15:36:22
【问题描述】:

我的问题与下一个代码sn-p有关:

  static void Main(string[] args)
{
    Lucene.Net.Store.Directory d = FSDirectory.Open(new DirectoryInfo(/*my index path*/));
    IndexWriter writer = new IndexWriter(d, new WhitespaceAnalyzer());

    //Exiting without closing the indexd writer...
}

在这个测试中,我打开了一个 IndexWriter 没有关闭它——所以即使在测试退出后,write.lock 文件仍然存在于索引目录中,所以我希望下次我打开一个 IndexWriter 的实例到那个索引, LockObatinFailedException 将被抛出。 有人可以向我解释为什么我错了吗?我的意思是,write.lock 文件的含义是否只是保护在同一进程中创建两个 IndexWriters?这对我来说似乎不是正确的答案......

【问题讨论】:

    标签: lucene lucene.net


    【解决方案1】:

    如果您将代码更改为,该 IndexWriter 构造函数似乎存在错误:

    IndexWriter writer = new IndexWriter("Path to index here", new WhitespaceAnalyzer());
    

    你会得到异常。

    锁文件用于防止在同一个索引上打开2个IndexWriter,无论它们是否在同一个进程中。您期望那里出现异常是正确的。

    【讨论】:

    • 看来你是对的!所有采用 Directory 而不是字符串的构造函数都不会抛出异常......我想知道这个问题是否在以后的版本中得到修复。无论如何,非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多