我刚刚花了一整天的时间试图让NHibernate.Search与NHibernate 2.0一起工作,很抱歉,我仍然没有做到。我遇到了问题帖子here,并下载了该帖子链接的动态链接库,但是这个示例使用的是搜索拦截器而不是EventListeners,我认为这是一种较新的处理方式。可用的信息似乎很少,我能找到的信息很难理解,而且与其他信息相矛盾。
在这一点上,我对整个事情感到非常沮丧,并且正在认真考虑只编写我自己的Nhibernate和Lucene的集成(或者可能是另一个索引库)。目前看来,NHibernate.Search还没有成熟到足以让我考虑使用它的地步,我会更放心地维护我自己的简化库。
我想知道的是,在NHibernate 2中使用NHibernate.Search是否有明确的方法,以及在生产环境中使用它是否可行。
发布于 2009-04-17 15:00:15
为了设置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>
...最后:在创建ISession实例时,请记住使用下面的代码来获得IFullTextSession。
IFullTextSession session = Search.CreateFullTextSession(factory.OpenSession());这应该适用于Lucene2.0和NHibernate 2.0。
https://stackoverflow.com/questions/756860
复制相似问题