如问题所述,我试图利用Solr的结果分组功能(惊喜)分组我的搜索结果。据我了解,Solrnet 0.3.1支持现场崩溃,但对于Solr而言,由于Solr替换为版本3.3中的结果分组而替换了现场。

我已经看到Solrnet 0.4.0 Alpha支持分组,但是我认为我不可能将其用于我当前的项目,因为它是Alpha,我很难将其证明给客户。除非有人可以列出一些令人信服的论点,否则alpha将是“不安全”。

我还尝试通过设置类似的插本来添加组参数:

 ExtraParams = new Dictionary<string, string>{{"group", "true"}, {"group.field", "fieldName"}}

这给nullReferenceException带来了:

         at SolrNet.Impl.ResponseParsers.ResultsResponseParser`1.Parse(XmlDocument xml, SolrQueryResults`1 results) in c:\prg\SolrNet\svn\SolrNet\Impl\ResponseParsers\ResultsResponseParser.cs:line 35
       at SolrNet.Impl.SolrQueryResultParser`1.Parse(String r) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrQueryResultParser.cs:line 46
       at SolrNet.Impl.SolrQueryExecuter`1.Execute(ISolrQuery q, QueryOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrQueryExecuter.cs:line 309
       at SolrNet.Impl.SolrBasicServer`1.Query(ISolrQuery query, QueryOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrBasicServer.cs:line 83
       at SolrNet.Impl.SolrServer`1.Query(String q, QueryOptions options) in c:\prg\SolrNet\svn\SolrNet\Impl\SolrServer.cs:line 78
       at RSearch.Core.SearchIndex.Search(String term, Int32 page, Int32 pageSize) in D:\Development\LESA-LARIAT\LariatMapper\Core\SearchIndex.cs:line 153
       at RSearch.Controllers.SearchController.Index(SearchInfo searchInfo) in D:\Development\LESA-LARIAT\LariatWeb\Controllers\SearchController.cs:line 16
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.
<InvokeActionMethodWithFilters>b__12()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)

我猜测为什么这样做的是Solrnet不了解结果的结构,因此会引发此异常。

我真的很想能够做到这一点,因为我觉得使用Solrnet来利用Solr的所有功能有点“脏”,但是在返回查询后通过LINQ进行分组。如果这是我唯一的选择,我不介意使用它。

谢谢您的帮助。

有帮助吗?

解决方案

简而言之:不,Solr/solrnet版本的组合没有办法。 Solrnet 0.3.1实施的场地崩溃,以每晚构建SOLR,刚刚开始实施场地崩溃(然后没有称为“分组”)。之后,在SOLR(现在称为“结果分组”)中对场的崩溃进行了完全大修,并且Solrnet 0.3.1实施被过时了。

在此之后不久添加了对结果分组的支持,并以0.4.0a1释放。

我建议使用0.4.0a1。它完全不是“不稳定”中的“不安全”:

  • 我在生产中使用夜间构建没有任何问题。
  • 下载计数 对于0.4.0a1,几乎高达0.3.1
  • Solrnet是使用 连续整合并进行彻底测试.
  • 正如我在 发行说明, ,对我而言,“ alpha”是指对单位进行彻底测试,但不是API冻干(API在GA释放中可能会略有变化)。

进行分组客户端(IE LINQ)并不是真正的选择,因为您必须获取 全部 正确执行的文件。就像想使用关系数据库进行分页 +对客户端进行分类一样。

您也许还可以将结果分组为0.3.1,但恕我直言确实毫无意义,并且浪费时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top