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

nhibernate.search,未创建Lucene索引文件

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

    我遇到一个问题与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。我已经检查了权限,似乎没有发现任何问题。

    这已经成为我的死胡同,对如何继续调试毫无头绪。任何反馈都非常感谢。

    好,更新:

    我已经知道了fulltextindexeventliner.initialize(nhibernate.cfg.configuration cfg)永远不会被调用。

    我假设在将侦听器添加到nhibernate配置时会触发它(因为它实现nhibernate.event.iInitializable),但在检查nhibernate的源时,情况似乎不是这样?

    奇怪的是,它在我的collegues dev机器上工作,而不需要这个手动调用。我们运行相同的源代码以及相同的库。

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

    好吧,我发现我的机器在某种程度上加速了ActiveRecord和NHibernate之间的初始化阶段,这意味着自从我在_ApplicationStart()上将事件侦听器注册为NHibernate后,NHibernate已经初始化,因此从未在侦听器中调用Initialize()。

    在我的同事计算机上,nhibernate在注册事件侦听器时还没有初始化,因此调用initialize。

    这是ActiveRecord设计中的一个缺陷,因为我需要在注册到nhibernate之前初始化ar。有点像第22条。

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

    推荐文章