Lucene.NET索引写入器锁

Lucene.NET索引写入器锁,lucene,lucene.net,Lucene,Lucene.net,我的问题与下一个代码段有关: 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 in

我的问题与下一个代码段有关:

  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文件的意义是否只是保护在同一个过程中创建两个IndexWriter?这似乎不是我的正确答案

如果将代码更改为:

IndexWriter writer = new IndexWriter("Path to index here", new WhitespaceAnalyzer());
你会得到例外


锁文件用于防止在同一索引上打开两个IndexWriter,无论它们是否在同一进程中。你在那里期待一个例外是对的。

看来你是对的!所有接受目录而不是字符串的构造函数都不会引发异常。。。我想知道这个问题是否在以后的版本中得到了解决。无论如何,非常感谢:)