2012-02-16 112 views
0

当一个应用程序独占使用Lucene索引时出现错误消息。NHibernate搜索和Lucene异常

未处理的异常:NHibernate.Search.Impl.SearchException:无法打开的IndexWriter为My命名空间 ---> Lucene.Net.Store.LockObtainFailedException:锁定获取超时:SimpleFSLock 我的索引路径 \写。锁

我只是徘徊,如果你们之前遇到过同样的问题?

回答

2

您可能在IndexWriter打开时崩溃,write.lock文件留在索引目录中。该文件由SimpleFSLockFactory用于确保在任何给定时间针对文件系统索引打开了一个IndexWriter。

进入你的索引目录,并删除write.lock文件,如果NHibernate不处理它自动。

+0

当我看到异常时,在索引目录中找不到write.lock。 – hardywang 2012-02-16 16:47:23

+0

然后我猜NHibernate可能会自己处理它,通过解锁目录,当它遇到异常。有一位Nhibernate专家证实这一点很棒。 – 2012-02-16 16:57:05

+0

我的经验是它不会自动删除它。我猜你试图从并行的多线程索引,这是不允许的。 – jishi 2012-02-21 15:33:05