1

現在、アプリでNHibernate.Searchを使用していますが、これは正常に機能しますが、アプリケーションの負荷を分散する必要があるため、Solrに移動する必要があります。

基本的なセットアップと作業は行っていますが、期待どおりの結果が得られません...これまでに行ったことは次のとおりです。

1)コマンドプロンプトでjavasolrサービスを実行します。(http:// localhost:8983 / solr / admin /にアクセスできます)2)SolrNetwikiで説明されているようにNhibernateCfgでSolrを初期化しました3)エンティティの1つにいくつかの属性(Id、Title、Description)を追加しました4)schema.xmlがインデックス付きフィールド(id、title、description)に一致するように変更されました5)インデックスにいくつかのエンティティを追加しました(管理コンソールで確認できます)6)以下を使用していますいくつかの検索結果を返すコード(wikiによる)

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

これを実行すると、正しい結果が見つかりますが、エンティティ全体がハイドレイトされるわけではなく、インデックスが作成されたフィールドのみがハイドレイトされます...ここで何かを見逃したことがあります... NHibernate.Searchはこれを魔法のように起こさせますか?

ポール

4

1 に答える 1

2

現在、NHibernate.SolrNet 統合は、Solr にクエリを実行するときにデータベースからエンティティをフェッチしません。SolrNetをforkしてこれを実装するか (Solr にクエリを実行した後に ID でデータベースからフェッチするだけの問題です)、または SolrNet と NHibernate 用に別個のエンティティを保持する (そしてプロジェクトから NHibernate.SolrNet 統合を削除する) ことができます。動作しますが、大幅に柔軟にする必要があります。

于 2011-03-23T16:54:09.463 に答える