solrnet 0.3.1およびsorl 3.3でフィールドの崩壊/グループ化を行うことは可能ですか

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

  •  25-10-2019
  •  | 
  •  

質問

質問で述べたように、私は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で行くことをお勧めします。 「不安定」のように「安全でない」ものではありません。

クライアント側(つまりlinq)をグループ化することは、実際には選択肢ではありません。 全て 適切に行うドキュメント。それはまさに、リレーショナルデータベースでページネーション +クライアント側を並べ替えることを望んでいるようなものです。

また、結果のグループ化を0.3.1にバックポートできるかもしれませんが、私見は本当に無意味で時間の無駄です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top