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

NHibernate.Search,未创建Lucene索引文件,nhibernate,lucene.net,castle-activerecord,nhibernate.search,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.anal

我遇到了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} 2009-01-20 17:37:17751[1]调试NHibernate.Impl.SessionFactoryImpl- 正在实例化具有以下属性的会话工厂:{use_reflection_optimizer=True, hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer,Lucene.Net, hibernate.search.default.directory\u provider=NHibernate.search.Store.FSDirectoryProvider, NHibernate.Search,dialogue=NHibernate.dialogue.postgresql82dialogue, connection.driver\u class=NHibernate.driver.NpgsqlDriver, hibernate.search.default.indexBase.create=true, hibernate.search.default.indexBase=c:\temp\Lucene, connection.provider=NHibernate.connection.DriverConnectionProvider, connection.connection\u string\u name=Dev} 但在那之后,一切似乎都不起作用了。不会创建任何文件,也不会创建c:\temp\Lucene。我已经检查了权限,似乎没有发现任何问题

这已经成为我的死胡同,我不知道如何继续调试。非常感谢您的反馈

好的,更新:

我发现FullTextIndexEventListener.Initialize(NHibernate.Cfg.Configuration Cfg)从未被调用

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


奇怪的是,它可以在我的同事开发机器上工作,而不需要手动调用。我们运行相同的源代码和库。

好的,我发现我的机器在某种程度上加快了ActiveRecord和NHibernate之间的初始化阶段,这意味着自从我在应用程序启动()上将EventListeners注册到NHibernate之后,NHibernate已经初始化,因此从未调用Initialize()在听众中

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

这是ActiveRecord设计中的一个缺陷,因为我需要初始化AR,然后才能将某些内容注册到NHibernate中。有点像第二十二条军规

希望有人会发现这些信息有用