2009-04-16 8 views
3

나는 하루 종일 NHibernate.Search가 NHibernate 2.0과 함께 작동하도록 노력했으며, 아직 관리하지 못했다고 미안하다. here에 게시 된 문제가 발생하여 해당 게시물로 연결된 DLL이 다운로드되었지만 예제에서는 EventListeners가 아닌 검색 인터셉터를 사용합니다. EventListeners는 새로운 방식의 것으로 생각합니다. 정보가 거의없는 것 같아서 찾을 수있는 것은 이해하기 어렵고 다른 정보와 모순됩니다.Nhibernate.Search with Nhibernate 2

이 시점에서 나는 모든 것에 상당히 좌절하며 Nhibernate와 Lucene (또는 아마도 다른 색인 생성 라이브러리)의 통합을 심각하게 고려하고 있습니다. 지금 NHibernate.Search는 내가 사용하기에 충분히 성숙한 것 같아서, 훨씬 더 단순화 된 라이브러리를 유지하는 것이 훨씬 편할 것이다.

내가 알고 싶은 것은 NHibernate2에서 NHibernate.Search를 사용하는 확실한 방법이 있는지 여부와 프로덕션 환경에서 이것을 사용할 수 있는지 여부이다. 자 NHibernate를 초기화 할 때 설정 EventListeners를하기 위해

+0

아마도 이런 종류의 질문을하는 것이 적절하지 않을 수 있습니다. NHibernate contrib 그룹을 시도 했습니까? http://groups.google.com/group/nhcdevs/? – Rashack

답변

7

, 당신은이 코드를 추가해야합니다

귀하의 Web.config/app.config 파일은 다음을 포함하기 위해 변경해야합니다
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(); 

:

<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()); 

이것은 Lucene 2.0 및 NHibernate 2.0에서 작동합니다.