Est-il possible de le faire Champ Collapsing / Regroupement avec Solrnet 0.3.1 et 3.3 SORL

StackOverflow https://stackoverflow.com/questions/8305187

  •  25-10-2019
  •  | 
  •  

Question

Comme mentionné dans la question que je suis en train d'utiliser un groupe à fonction (surprise) regroupant le résultat de ma recherche Solr résultats. D'après ce que je comprends champ Solrnet 0.3.1 de soutien, mais l'effondrement est rompu pour Solr parce que le champ remplacé Solr l'effondrement des résultats de regroupement dans la version 3.3.

J'ai vu que Solrnet 0.4.0 supports alpha regroupement, mais je ne pense pas qu'il est possible pour moi d'utiliser que pour mon projet en cours comme il est l'alpha et j'aurais un moment difficile à justifier au client. A moins que quelqu'un puisse la liste des arguments assez convaincants au contraire qu'une alpha serait « dangereux ».

J'ai aussi essayé d'ajouter les paramètres du groupe en définissant les ExtraParams comme ceci:

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

Cela jette un 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)

Je pense à pourquoi il est-ce que cela Solrnet ne comprend pas la structure des résultats repassée à elle il jette cette exception.

Je voudrais vraiment pouvoir faire ce que je pense qu'il est un peu « sale » à utiliser pour tirer parti Solrnet toutes les fonctionnalités de Solr mais ont le groupement fait via LINQ après la requête est renvoyée. Si c'est ma seule option que je ne me dérange pas l'utiliser si.

Merci pour votre aide.

Était-ce utile?

La solution

En bref: non, il n'y a aucun moyen avec cette combinaison de versions Solr / SolrNet. SolrNet 0.3.1 terrain mis en œuvre l'effondrement d'une construction nocturne de Solr, quand il vient de commencer la mise en œuvre champ effondrement (il n'a pas été appelé « regroupement », alors). Après cela, le champ effondrement a été complètement remanié dans Solr (maintenant appelé « résultat de regroupement »), et la mise en œuvre SolrNet 0.3.1 a été laissé obsolète.

Soutien pour le regroupement des résultats a été ajouté peu de temps après et publié avec 0.4.0a1.

Je recommande d'aller avec 0.4.0a1. Ce n'est pas « dangereux » comme dans « instable » du tout:

  • J'utilise nightly builds dans la production sans aucun problème.
  • comte Télécharger pour 0.4.0a1 est assez élevé, presque autant que 0.3.1
  • SolrNet est développé en utilisant l'intégration continue et soigneusement testé
  • Comme je l'ai expliqué dans les notes de version , « alpha » me signifie bien des tests unitaires, mais pas gelé API (API peut changer légèrement la version GA).

Faire le regroupement côté client (par exemple LINQ) n'est pas vraiment une option, que vous devez chercher tous les documents pour le faire correctement. Il est comme vouloir de + tri-pagination côté client avec une base de données relationnelle.

Vous pouvez également être en mesure de résultat backport regroupement à 0.3.1, mais à mon humble avis est vraiment inutile et une perte de temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top