将Nhibernate.Search与Nhibernate 2集成

将Nhibernate.Search与Nhibernate 2集成,nhibernate,nhibernate.search,Nhibernate,Nhibernate.search,我刚刚花了一整天的时间尝试获取NHibernate.Search与NHibernate2.0一起工作,很抱歉,我仍然没有管理它。我遇到了发布的问题,并下载了该帖子链接的dll,但是该示例使用了搜索拦截器而不是EventListeners,我认为这是一种更新的方式。似乎只有很少的信息可用,我能找到的很难理解,并且与其他信息相矛盾 在这一点上,我对整件事感到非常失望,并且正在认真考虑编写自己的Nhibernate和Lucene集成(或者可能是另一个索引库)。目前看来,NHiBiNeal.St搜索现在

我刚刚花了一整天的时间尝试获取NHibernate.Search与NHibernate2.0一起工作,很抱歉,我仍然没有管理它。我遇到了发布的问题,并下载了该帖子链接的dll,但是该示例使用了搜索拦截器而不是EventListeners,我认为这是一种更新的方式。似乎只有很少的信息可用,我能找到的很难理解,并且与其他信息相矛盾

在这一点上,我对整件事感到非常失望,并且正在认真考虑编写自己的Nhibernate和Lucene集成(或者可能是另一个索引库)。目前看来,NHiBiNeal.St搜索现在已经接近成熟了,我可以考虑使用它,我将更舒适地维护我自己的更简化的库。


我想知道的是,是否有使用NHibernate.Search和NHibernate 2的确定方法,以及在生产环境中使用该方法是否可行。

为了设置EventListeners,您需要在初始化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();
必须更改web.config/app.config文件才能包含以下内容:

<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>

    ...

这应该适用于Lucene 2.0和NHibernate 2.0。

也许这不是问这类问题的合适地方-你试过NHibernate contrib group吗?
IFullTextSession session = Search.CreateFullTextSession(factory.OpenSession());