インスタンスにいくつかの Solr コアがあり、それぞれにStandardRequestHandlerといくつかのカスタム リクエスト ハンドラが構成されています。
<requestDispatcher handleSelect="true" >
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
</requestDispatcher>
...
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
...
<requestHandler name="/custom" class="com.example.our.package.CustomHandler" />
...
SolrJを介して両方にアクセスできるようにしたいのですが、オブジェクトのbaseUrlプロパティを設定することによってのみこれを行うことができます。ただし、インスタンスは複数のスレッド間で共有されるため、競合状態が発生するため、HttpSolrServerこれは望ましくありません。もう 1 つの理由は、チームのコンセンサスが、単純化のためにスコープ化されていることにあることです。HttpSolrServerHttpSolrServerSingleton
私が試したのは次のようなものです:
HttpSolrServer server = new HttpSolrServer("http://URL_OF_SOLR:PORT/solr/");
SolrQuery query = new SolrQuery();
query.setQueryType("/core/custom");
これはカスタム ハンドラでは機能しますが/select、少なくとも試した URL ( /core、/core/select、/core/、/core/standard) などでは、 を呼び出すとコード 400 で失敗します。
だから私の質問は次のとおりです。コアのデフォルトのリクエストハンドラーを正しく参照するには、このクエリをどのように定義すればよいですqueryTypeかSolrParams?