Lucene .NET IndexWriter锁

时间:2012-09-04 15:36:23

标签: 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 indexd writer...
}

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

1 个答案:

答案 0 :(得分:2)

如果您将代码更改为:

,看起来该IndexWriter构造函数存在错误
IndexWriter writer = new IndexWriter("Path to index here", new WhitespaceAnalyzer());

您将获得例外。

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