SolrNet+;NHibernate集成

SolrNet+;NHibernate集成,nhibernate,solr,lucene.net,solrnet,Nhibernate,Solr,Lucene.net,Solrnet,我目前在我的应用程序中使用NHibernate.Search,效果很好,但是我现在需要转到Solr,因为我需要平衡我的应用程序的负载 我已经完成了基本的设置和工作,但结果并没有达到预期……以下是我迄今为止所做的工作: 1) 在命令提示符下运行java solr服务。(我可以访问) 2) 使用我的Nhibernate Cfg初始化Solr,如SolrNet wiki上所述 3) 我已经向我的一个实体添加了一些属性(Id、标题、描述) 4) 已修改My schema.xml以匹配索引字段(id、标题

我目前在我的应用程序中使用NHibernate.Search,效果很好,但是我现在需要转到Solr,因为我需要平衡我的应用程序的负载

我已经完成了基本的设置和工作,但结果并没有达到预期……以下是我迄今为止所做的工作:

1) 在命令提示符下运行java solr服务。(我可以访问) 2) 使用我的Nhibernate Cfg初始化Solr,如SolrNet wiki上所述 3) 我已经向我的一个实体添加了一些属性(Id、标题、描述) 4) 已修改My schema.xml以匹配索引字段(id、标题、说明) 5) 我在索引中添加了几个实体(我可以在管理控制台中看到它们) 6) 我使用以下代码返回一些搜索结果(根据wiki)

NHibernate.SolrNet.CfgHelper CfgHelper=new CfgHelper();
i收集实体;
ISessionFactory sessionFactory=Session.sessionFactory;
使用(var session=cfgHelper.OpenSession(sessionFactory)){
entities=session.CreateSolrQuery(term).SetMaxResults(10).List();
}
返回实体。ToList();
当我运行这个程序时,它会找到正确的结果,但是它不会对完整的实体进行水合,只有已被索引的字段…我在这里遗漏了什么…NHibernate.Search是否神奇地为我实现了这一点


Paul

目前,NHibernate.SolrNet集成在查询Solr时不会从数据库中获取实体。您可以分叉并实现这一点(这是在查询Solr后通过id从数据库中获取的问题),或者您可以为SolrNet和NHibernate保留单独的实体(并从项目中删除NHibernate.SolrNet集成),这可能需要更多的工作,但应该更加灵活。

我甚至不知道从哪里开始修改这个项目……如果你能给我一些建议,我愿意尝试一下……它会在NHSolrQueryImpl.cs类的“Execute”函数中吗?@Paul:对不起,我好像错过了这个评论!是的,这正是起点。@Paul:如果你还有其他问题,请访问SolrNet邮件列表:
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();