代码之家  ›  专栏  ›  技术社区  ›  jishi

NHibernate。搜索,Lucene索引文件未创建

  •  0
  • jishi  · 技术社区  · 16 年前

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

    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。初始化(NHibernate.Cfg.Configuation Cfg)从不被调用。

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   jishi    16 年前

    好的,我发现不知何故,我的机器一直在加速ActiveRecord和NHibernate之间的初始化阶段,这意味着由于我将EventListener注册到NHibernateOn_ApplicationStart(),NHibernates已经初始化,因此从未在侦听器中调用Initialize()。

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

    这在某种程度上是ActiveRecord设计中的一个缺陷,因为我需要初始化AR,然后才能将某些内容注册到NHibernate中。有点像22号接球。

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