0

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

  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 文件仍然存在于 index 目录中,所以我预计下次我打开一个 IndexWriter 到该索引的实例时,LockObatinFailedException会被抛出。有人可以向我解释为什么我错了吗?我的意思是,write.lock 文件的含义是否只是保护在同一进程中创建两个 IndexWriters?这对我来说似乎不是正确的答案......

4

1 回答 1

2

如果您将代码更改为:

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

你会得到异常。

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

于 2012-09-04T15:53:01.047 回答