我遇到了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上运行而没有这个手动调用。我们运行相同的源以及相同的库。
答案 0 :(得分:1)
好吧,想通了一下,我的机器一直在加速ActiveRecord和NHibernate之间的初始化阶段,这意味着由于我将EventListeners注册到NHibernate On_ApplicationStart(),NHibernate已经初始化,因此永远不会调用Initialize()听众。
在我的同事计算机上,NHibernate在注册eventlisteners时尚未初始化,因此调用Initialize。
这在ActiveRecord设计中有些缺陷,因为我需要初始化AR才能在NHibernate中注册。有点像捕获22。
希望有人会发现此信息有用。