2009-04-16 9 views
3

NHibernate.SearchをNHibernate 2.0と一緒に働かせようと一日中過ごしましたが、私はまだそれを管理していないと申し訳ありません。私はhereというポストされた問題に遭遇し、そのポストでリンクされたdllをダウンロードしましたが、例ではEventListenersではなく検索インターセプタを使用しています。これは新しい方法です。利用可能な情報はほとんどなく、私が見つけることができるものは理解しにくく、他の情報と矛盾しています。Nhibernate.Search with Nhibernate 2を統合する

この時点で、私はすべてのことにかなり不満を持ち、NhibernateとLucene(またはおそらく別のインデックス作成ライブラリ)の統合を真剣に考えています。現時点では、NHibernate.Searchは、私がそれを使用することを検討するのに十分近いほど成熟しているようですが、私ははるかに単純化されたライブラリを維持するのがはるかに快適です。

私が知りたいのは、NHibernate.SearchをNHibernate 2で使用する確実な方法があるかどうか、そしてこれを本番環境で使用することが可能かどうかです。

+0

これは、この種の質問をする適切な場所ではないかもしれません - あなたはNHibernate contribグループhttp://groups.google.com/group/nhcdevs/を試しましたか? – Rashack

答えて

7

セットアップのEventListenerのためには、あなたは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()); 

これは、Lucene 2.0とNHibernate 2.0で動作するはずです。

関連する問題