我的问题与下一段代码相关:
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吗?这似乎不是我正确的答案......
答案 0 :(得分:2)
如果您将代码更改为:
,看起来该IndexWriter构造函数存在错误IndexWriter writer = new IndexWriter("Path to index here", new WhitespaceAnalyzer());
您将获得例外。
锁定文件用于防止2个IndexWriter在同一个索引上打开,无论它们是否在同一个进程中。你在那里期待一个例外是正确的。