Можно ли выполнить Collapsing / Grouping поля с Solrnet 0.3.1 и Sorl 3.3 - PullRequest
0 голосов
/ 29 ноября 2011

Как уже упоминалось в вопросе, я пытаюсь использовать функцию группировки результатов Solr, чтобы (удивить) сгруппировать результаты поиска.Из того, что я понимаю, Solrnet 0.3.1 поддерживает свертывание полей, но не работает для Solr, потому что Solr заменил сворачивание полей на группировку результатов в версии 3.3.

Я видел, что Solrnet 0.4.0 alpha поддерживает группировку, однако я неЯ думаю, что это возможно для меня, чтобы использовать это для моего текущего проекта, поскольку это альфа, и мне было бы непросто оправдать это для клиента.Если кто-то не может перечислить несколько достаточно убедительных аргументов в обратном, что альфа будет «небезопасной».

Я также попытался добавить параметры группы, установив ExtraParams следующим образом:

 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 после возврата запроса.Если это мой единственный вариант, я не возражаю против его использования.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 29 ноября 2011

Короче говоря: нет, с этим сочетанием версий Solr / SolrNet нет пути. SolrNet 0.3.1 реализовал свертывание полей для ночной сборки Solr, когда он только начал реализовывать свертывание полей (тогда это не называлось «группировкой»). После этого в Solr было полностью переработано свертывание полей (теперь это называется «группировкой результатов»), а реализация SolrNet 0.3.1 устарела.

Поддержка группировки результатов была добавлена ​​вскоре после этого и выпущена с 0.4.0a1.

Я рекомендую перейти с 0.4.0a1. Это вовсе не «небезопасно», как в «нестабильно»:

Группировка на стороне клиента (т. Е. LINQ) на самом деле не вариант, так как вам нужно извлечь все документы, чтобы сделать это правильно. Это все равно что хотеть разбить на страницы + сортировку на стороне клиента с реляционной базой данных.

Вы также можете перенести группировку результатов в 0.3.1, но ИМХО действительно бессмысленно и трата времени.

...