2011-03-23 28 views
1

我目前在我的应用程序中使用NHibernate.Search哪些工作正常,但我现在需要移动到Solr,因为我需要负载平衡我的应用程序。SolrNet + NHibernate集成

我有基本的设置和工作,但结果arn't现身预期......这是我迄今所做的:在命令提示符下

1)运行Java Solr的服务。 (我可以访问http://localhost:8983/solr/admin/) 2)初始化Solr与我的Nhibernate Cfg描述在SolrNet wiki 3)我已经添加了一些属性到我的一个实体(Id,标题,描述) 4)我的schema.xml已经修改为匹配我的索引字段(编号,标题,说明) 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 nate.Search让这奇迹般地发生在我身上?

保罗

回答

2

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

+0

我甚至不知道从哪里开始修改项目......如果你能给我一些指针,那么就给它一个去吧......它会在NHSolrQueryImpl.cs类的'Execute'函数中吗? – 2011-03-24 13:29:07

+0

@Paul:对不起,我好像错过了这个评论!是的,这正是起点。 – 2011-04-03 00:58:05

+0

@Paul:如果SolrNet邮件列表中有任何其他问题:http://groups.google.com/group/solrnet – 2011-04-03 00:58:43