NHibernate.Search,Lucene索引文件未创建

时间:2009-01-20 16:49:01

标签: nhibernate lucene.net castle-activerecord nhibernate.search

我遇到了NHibernate.Search的一个问题,它突然停止工作,它根本无法创建文件或读取索引文件。

NHibernate似乎正确加载它:

2009-01-20 17:37:17,751 [1] DEBUG NHibernate.Impl.SessionFactoryImpl   - 
  instantiating session factory with properties: {use_reflection_optimizer=True,
  hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer, Lucene.Net, 
  hibernate.search.default.directory_provider=NHibernate.Search.Store.FSDirectoryProvider, 
  NHibernate.Search, dialect=NHibernate.Dialect.PostgreSQL82Dialect, 
  connection.driver_class=NHibernate.Driver.NpgsqlDriver, 
  hibernate.search.default.indexBase.create=true, 
  hibernate.search.default.indexBase=c:\temp\Lucene, 
  connection.provider=NHibernate.Connection.DriverConnectionProvider, 
  connection.connection_string_name=Dev}

但在那之后,似乎没有任何作用。没有创建文件,也从不创建c:\ temp \ Lucene。我已经检查了权限,但我似乎无法找到任何错误。

对我来说,这已成为一个死胡同,并且不知道如何进行调试。任何反馈都非常感谢。

好的,更新:

我已经发现永远不会调用FullTextIndexEventListener.Initialize(NHibernate.Cfg.Configuration cfg)。

我假设在向NHibernate配置添加监听器时会触发它(因为它实现了NHibernate.Event.IInitializable),但在检查NHibernate的源代码时,情况似乎并非如此?

奇怪的是,它可以在我的同事dev-machine上运行而没有这个手动调用。我们运行相同的源以及相同的库。

1 个答案:

答案 0 :(得分:1)

好吧,想通了一下,我的机器一直在加速ActiveRecord和NHibernate之间的初始化阶段,这意味着由于我将EventListeners注册到NHibernate On_ApplicationStart(),NHibernate已经初始化,因此永远不会调用Initialize()听众。

在我的同事计算机上,NHibernate在注册eventlisteners时尚未初始化,因此调用Initialize。

这在ActiveRecord设计中有些缺陷,因为我需要初始化AR才能在NHibernate中注册。有点像捕获22。

希望有人会发现此信息有用。