2011-03-23 19 views
1

私は現在NHibernate.Searchを使用していますが、アプリケーションのロードバランシングが必要なのでSolrに移動する必要があります。SolrNet + NHibernateインテグレーション

は、私は基本セットアップと作業を持っていますが、期待通りの結果が出てくるarn't ...ここで私はこれまでやっていることです:コマンドプロンプトで

1)で実行されるJavaのSolrサービス。 (私はhttp://localhost:8983/solr/admin/にアクセスできます) 2)SolrNet wikiに記載されているNhibernate Cfgで初期化されたSolf 3)自分のエンティティ(Id、Title、Description)のいずれかにいくつかの属性を追加しました 4)私のschema.xmlは(ID、タイトル、説明) 5)インデックスにいくつかのエンティティを追加しました。(管理コンソールで表示できます) 6)検索結果を返すために次のコードを使用しています(ウィキごとなど)

NHibernate.SolrNet.CfgHelper cfgHelper = new CfgHelper(); 

ICollection<T> entities; 

ISessionFactory sessionFactory = Session.SessionFactory; 
using (var session = cfgHelper.OpenSession(sessionFactory)) { 
    entities = session.CreateSolrQuery(term).SetMaxResults(10).List<T>(); 
} 
return entities.ToList(); 

私はそれが正しい結果を見つけ、これを実行すると、しかし、それは完全なエンティティ、インデックスが作成されているフィールドのみを水和しませんが...私はここで何かを逃したが...やりましたNHiberこれは私にとって魔法のように起こりますか?ポール

答えて

2

は現在、NHibernate.SolrNet統合はSolrのを照会し、データベースからエンティティをフェッチしません。 SolrNetをフォークして実装することができます(これはSolrに問い合わせた後にIDからデータベースからフェッチすることです)、またはSolrNetとNHibernateのエンティティを別々に保つことができます(さらにプロジェクトからNHibernate.SolrNet統合を削除することもできます)。はるかに柔軟性があるはずです。

+0

私はいくつかのポインタを与えることができれば、プロジェクトを修正するためにどこを起動するのかわかりません... NHSolrQueryImpl.csクラスの 'Execute'関数にはありますか? –

+0

@Paul:申し訳ありませんが、私はこのコメントを逃したようです!はい、まさに出発点です。 –

+0

@Paul:SolrNetのメーリングリストで他に質問がある場合は、http://groups.google.com/group/solrnet –