Nhibernate搜索帖子更新侦听器

Nhibernate搜索帖子更新侦听器,nhibernate,activerecord,lucene.net,nhibernate.search,Nhibernate,Activerecord,Lucene.net,Nhibernate.search,我已将nHibernate搜索与我的nHibernate/ActiveRecord项目集成 我试图让我的更新后侦听器正常工作,但似乎每次我更新一个用[Indexed]属性修饰的对象时,都会导致nhibernate.search创建一个新的IndexReader(Workspace.cs GetIndexReader方法),这大约需要30秒 知道nhibernate.search为什么这么做吗 这是我的配置 <configSections> <section name="

我已将nHibernate搜索与我的nHibernate/ActiveRecord项目集成

我试图让我的更新后侦听器正常工作,但似乎每次我更新一个用[Indexed]属性修饰的对象时,都会导致nhibernate.search创建一个新的IndexReader(Workspace.cs GetIndexReader方法),这大约需要30秒

知道nhibernate.search为什么这么做吗

这是我的配置

<configSections>
    <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
    </configSections>
  <activerecord isWeb="true">
    <config>
      <add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
      <add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
      <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
      <add key="connection.connection_string" value="Data Source=***;user id=****;password=****;Initial Catalog=*****" />
      <add key="hibernate.search.default.directory_provider" value="NHibernate.Search.Store.FSDirectoryProvider, NHibernate.Search" /> 
      <add key="hibernate.search.default.indexBase" value="C:\LuceneIndex" />
      <add key="hibernate.search.analyzer" value="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>
      <add key="hibernate.search.indexing_strategy" value="event" />
      <add key="hibernate.search.reader.strategy" value="shared" />  
    </config>
  </activerecord>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu </property>
      <event type="delete">
        <listener class="SoftDeleteListener, Mydll"/>
      </event>
      <event type="post-update">
        <listener class="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
      </event>
      <event type="post-insert"> 
        <listener class="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
      </event>
      <event type="post-delete">
        <listener class="NHibernate.Search.Event.FullTextIndexEventListener, NHibernate.Search" />
      </event>
    </session-factory>
  </hibernate-configuration>

如果通过配置添加侦听器,则无需通过编程方式添加它们

您是否已尝试从配置中删除以下行:

<add key="hibernate.search.indexing_strategy" value="event" />
<add key="hibernate.search.reader.strategy" value="shared" /> 


结果表明,我的应用程序引发了一个异常,但除非我正在调试,否则不会被检测到

我更感兴趣的是知道如何传递用于更新的特定id。有可能吗?
<add key="hibernate.search.indexing_strategy" value="event" />
<add key="hibernate.search.reader.strategy" value="shared" />