1

我目前在我的应用程序中使用 NHibernate.Search,它工作正常,但是我现在需要转移到 Solr,因为我需要对我的应用程序进行负载平衡。

我有基本的设置和工作,但结果没有按预期出现......这是我到目前为止所做的:

1) 在命令提示符下运行 java solr 服务。(我可以访问http://localhost:8983/solr/admin/) 2)如 SolrNet wiki 上所述,使用我的 Nhibernate Cfg 初始化 Solr 3)我已向我的一个实体(ID、标题、描述)添加了一些属性4)我的 schema.xml 已修改以匹配我的索引字段(id、标题、描述) 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并实现它(这是在查询 Solr 后通过 id 从数据库中获取的问题),或者您可以为 SolrNet 和 NHibernate 保留单独的实体(并从您的项目中删除 NHibernate.SolrNet 集成),这可能更多工作,但应该更加灵活。

于 2011-03-23T16:54:09.463 回答