solrnet 0.3.1およびsorl 3.3でフィールドの崩壊/グループ化を行うことは可能ですか
質問
質問で述べたように、私はSolrの結果グループ化機能を(サプライズ)グループの検索結果に活用しようとしています。私が理解していることから、Solrnet 0.3.1はフィールドの崩壊をサポートしていますが、solrはバージョン3.3の結果グループに崩壊したため、solrが壊れています。
Solrnet 0.4.0 Alphaがグループ化をサポートしていることを見てきましたが、現在のプロジェクトでAlphaであるため、それを顧客に正当化するのに苦労することはありません。誰かがアルファが「危険」であるという反対に、かなり説得力のある議論をリストすることができない限り。
また、次のような外部路を設定して、グループパラメーターを追加しようとしました。
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を介してグループ化を行うことができるので、これを行うことができます。それが私の唯一の選択肢なら、私はそれを使用しても構いません。
ご協力ありがとうございました。
解決
要するに、いいえ、solr/solrnetバージョンのそのコンボには方法がありません。 solrnet 0.3.1は、フィールドの崩壊の実装を開始したばかりのsolrの毎晩のビルドのためにフィールド崩壊を実装しました(「グループ」とは呼ばれませんでした)。その後、フィールドの崩壊はsolr(現在は「結果グループ化」と呼ばれる)で完全にオーバーホールされ、solrnet 0.3.1の実装は時代遅れのままでした。
結果グループ化のサポートはその後まもなく追加され、0.4.0A1でリリースされました。
0.4.0A1で行くことをお勧めします。 「不安定」のように「安全でない」ものではありません。
- 私は何の問題もなく、生産で毎晩ビルドを使用しています。
- カウントをダウンロードしてください 0.4.0A1の場合はかなり高く、ほぼ0.3.1
- Solrnetは使用して開発されています 継続的な統合と徹底的なテスト.
- で説明したように リリースノート, 、私にとって「アルファ」とは、徹底的に単位テストされたが、APIフロゼンではないことを意味します(APIはGAリリースでわずかに変化する可能性があります)。
クライアント側(つまりlinq)をグループ化することは、実際には選択肢ではありません。 全て 適切に行うドキュメント。それはまさに、リレーショナルデータベースでページネーション +クライアント側を並べ替えることを望んでいるようなものです。
また、結果のグループ化を0.3.1にバックポートできるかもしれませんが、私見は本当に無意味で時間の無駄です。