Ist es möglich, das Feld zusammenzubrechen/zu gruppieren mit Solrnet 0.3.1 und SORL 3.3

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

  •  25-10-2019
  •  | 
  •  

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.

War es hilfreich?

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":

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top