Integrating Nhibernate.Search with Nhibernate 2

后端 未结 1 1184
鱼传尺愫
鱼传尺愫 2021-02-11 01:19

I have just spent all day attempting to get NHibernate.Search working alongside NHibernate 2.0 and am sorry to say that I have still not managed it. I ran into the problem poste

相关标签:
1条回答
  • 2021-02-11 02:10

    In order to setup EventListeners, you need to add this code when initializing NHibernate:

    NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
    //Load configuration
    
    //Add NHibernate.Search listeners
    cfg.SetListener(NHibernate.Event.ListenerType.PostUpdate, new FullTextIndexEventListener());
    cfg.SetListener(NHibernate.Event.ListenerType.PostInsert, new FullTextIndexEventListener());
    cfg.SetListener(NHibernate.Event.ListenerType.PostDelete, new FullTextIndexEventListener());
    
    var factory = cfg.BuildSessionFactory();
    

    Your web.config/app.config file must be changed in order to include the following:

    <configuration>
    
        <configSections>
            <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false"/>
            <section name="nhs-configuration" type="NHibernate.Search.Cfg.ConfigurationSectionHandler, NHibernate.Search" requirePermission="false"/>
        </configSections>
    
        <!-- NHibernate.Search -->
        <nhs-configuration xmlns='urn:nhs-configuration-1.0'>
            <search-factory>
                <property name='hibernate.search.default.directory_provider'>NHibernate.Search.Store.FSDirectoryProvider, NHibernate.Search</property>
    
    
                <property name='hibernate.search.default.indexBase'>PATH TO LUCENE.NET STORE</property>
    
                <property name='hibernate.search.indexing_strategy'>event</property>
            </search-factory>
        </nhs-configuration>
    
        <appSettings>
            <add key="Lucene.Net.lockdir" value="SAME PATH AS ABOVE" />
        </appSettings>
    
        ...
    

    And finally: when you create an ISession instance, remember to use this code in order to get an IFullTextSession instead.

    IFullTextSession session = Search.CreateFullTextSession(factory.OpenSession());
    

    This should work with Lucene 2.0 and NHibernate 2.0.

    0 讨论(0)
提交回复
热议问题