Ist es möglich, das Feld zusammenzubrechen/zu gruppieren mit Solrnet 0.3.1 und SORL 3.3
Frage
Wie in der Frage erwähnt, versuche ich, die Ergebnisgruppierungsfunktion von Solr zu verwenden, um meine Suchergebnisse (Überraschungs-) Gruppe zu verwenden. Soweit ich verstehe, dass SolRNet 0.3.1 das Feld zusammenbricht, ist jedoch für SolR unterbrochen, da SolR das Feld des Feldes durch die Gruppierung der Ergebnisse in Version 3.3 ersetzt.
Ich habe gesehen, dass Solrnet 0.4.0 Alpha die Gruppierung unterstützt, aber ich glaube nicht, dass es mir möglich ist, dies für mein aktuelles Projekt zu verwenden, da es Alpha ist und es mir schwer fällt, es dem Kunden zu rechtfertigen. Es sei denn, jemand kann im Gegenteil einige ziemlich überzeugende Argumente auflisten, dass ein Alpha "unsicher" wäre.
Ich habe auch versucht, die Gruppenparameter hinzuzufügen, indem ich die Extraparams wie SO einstellen:
ExtraParams = new Dictionary<string, string>{{"group", "true"}, {"group.field", "fieldName"}}
Dies wirft eine NullReferencexception aus:
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)
Ich vermute, warum dies ist, dass Solrnet die Struktur der an sie weitergegebenen Ergebnisse nicht versteht, sodass es diese Ausnahme ausgelöst hat.
Ich möchte dies wirklich gerne tun, da ich das Gefühl habe, dass es ein wenig "schmutzig" ist, Solrnet zu verwenden, um alle Funktionen von Solr zu nutzen, aber die Gruppierung über Linq nach der Rückgabe der Abfrage erledigt. Wenn es meine einzige Option ist, habe ich es jedoch nichts aus.
Danke für Ihre Hilfe.
Lösung
Kurz gesagt: Nein, diese Kombination von Solr/Solrnet -Versionen gibt es auf keinen Fall. Solrnet 0.3.1 implementiert das Feld, das für einen nächtlichen Aufbau von Solr zusammenbrach, als es gerade begann, das Feld zu implementieren (es wurde damals nicht als "Gruppierung" bezeichnet). Danach wurde das Feld Zusammenbruch in Solr (jetzt als "Ergebnisgruppierung" bezeichnet) vollständig überarbeitet, und die Solrnet 0.3.1 -Implementierung wurde veraltet.
Kurz darauf wurde die Unterstützung für die Ergebnisgruppierung hinzugefügt und mit 0,4.0A1 veröffentlicht.
Ich empfehle, mit 0.4.0A1 zu gehen. Es ist nicht "unsicher" wie in "instabil":
- Ich benutze nächtliche Produkte in Produktion ohne Probleme.
- Download Count für 0.4.0a1 ist ziemlich hoch, fast so viel wie 0,3,1
- Solrnet wird mit Verwendung entwickelt kontinuierliche Integration und gründlich getestet.
- Wie ich in der erklärte Versionshinweise, 'Alpha' bedeutet für mich gründlich einheitlich, aber nicht api-frozen (API kann sich in der GA-Freisetzung leicht ändern).
Das Gruppieren von Client-Side (IE LINQ) ist nicht wirklich eine Option, da Sie holen müssen alle die Dokumente, um dies ordnungsgemäß zu tun. Es ist nur so, als würde man die Client-Seite mit einer relationalen Datenbank pagieren + sortieren.
Möglicherweise können Sie auch die Ergebnisgruppierung auf 0.3.1 zurückbiegen, aber IMHO ist wirklich sinnlos und Zeitverschwendung.