E 'possibile fare Campo Crollare / Raggruppamento con Solrnet 0.3.1 e 3.3 SORL
Domanda
Come indicato nella domanda che sto cercando di utilizzare il risultato di Solr funzione di raggruppamento a (sorpresa) gruppo I miei risultati della ricerca. Da quello che ho capito Solrnet campo 0.3.1 supporti collasso, ma è spezzato per Solr Solr perché sostituito campo collasso con risultati raggruppandoli in versione 3.3.
ho visto che Solrnet supporti 0.4.0 alpha raggruppamento però non credo sia possibile per me di utilizzare tale per il mio progetto attuale è alfa e avrei avuto un momento difficile giustificare al cliente. A meno che qualcuno può elencare alcuni argomenti abbastanza convincenti per il contrario, che un alfa sarebbe 'non sicuro'.
Inoltre ho provato ad aggiungere i parametri del gruppo impostando i ExtraParams in questo modo:
ExtraParams = new Dictionary<string, string>{{"group", "true"}, {"group.field", "fieldName"}}
Questo getta una 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)
La mia ipotesi al motivo per cui lo fa è Solrnet non capisce la struttura dei risultati passò di nuovo esso in modo che genera questa eccezione.
Mi piacerebbe davvero essere in grado di fare questo, come sento che è un po 'sporca' di utilizzare Solrnet per sfruttare tutte le funzionalità di Solr, ma hanno il raggruppamento fatto tramite LINQ dopo che la query viene restituito. Se è la mia unica opzione non mi dispiace usandolo però.
Grazie per il vostro aiuto.
Soluzione
In breve: no, non c'è modo con quella combo di Solr / SolrNet versioni. SolrNet 0.3.1 campo implementato crollare per una nightly build di Solr, quando ha appena iniziato campo crollare attuazione (non è stato chiamato 'raggruppamento' allora). Dopo di che, campo collassare completamente revisionata nel Solr (ora chiamato 'risultato raggruppamento'), e l'attuazione SolrNet 0.3.1 è stato lasciato obsoleto.
Il supporto per il raggruppamento risultato è stato aggiunto poco dopo e rilasciato con 0.4.0a1.
Consiglio di andare con 0.4.0a1. Non è 'sicuro' come in 'unstable' a tutti:
- Sto usando nightly build nella produzione senza problemi.
- conteggio dei download per 0.4.0a1 è piuttosto alto, quasi quanto 0.3.1
- SolrNet è stato sviluppato utilizzando continua integrazione e accuratamente testati .
- Come ho spiegato nelle note di rilascio , 'alpha' per me significa accuratamente unità testato, ma non API-congelati (API può variare leggermente nella versione GA).
In questo raggruppamento sul lato client (cioè LINQ) non è davvero un'opzione, come si deve prendere tutte le i documenti per farlo correttamente. E 'come voler a impaginazione + ordinamento sul lato client con un database relazionale.
Si può anche essere in grado di risultato backport raggruppamento al 0.3.1, ma secondo me è davvero inutile e una perdita di tempo.