1

次のように、Solr を実行しているサーバーにクエリを送信しようとしています。

String solrServerUrl = //SomeBaseUrl
CommonsHttpSolrServer searchServer = new CommonsHttpSolrServer("http://"+solrServerUrl);
QueryResponse result = searchServer.query(query,SolrRequest.METHOD.POST);

Solr サーバーに送信するクエリ リクエストに、次のように sessionId 文字列を追加します (ログ記録のため)。

String solrServerUrl = SomeBaseUrl.concat("?sessionId");

サーバーを実行すると、次の例外が発生します。

ネストされた例外は java.lang.RuntimeException: Invalid base url for solrj です。ベース URL にパラメーターを含めないでください

ロギング目的で宛先Solrサーバーに設定されたTomcatバルブによってセッションIDが選択されるように、一意のセッションIDをSolrサーバーに転送する方法を誰かが指摘できますか?

ありがとう

4

1 に答える 1

1

実際のコードではそのようになる可能性はないと思いますCommonsHttpSolrServer。POST を使用しているか GET を使用しているかは問題ではありません (rfeak のコメントが良さそうに見えても)。

CommonsHttpSolrServerメインコンストラクターには次のような条件があります。

if( _baseURL.indexOf( '?' ) >=0 ) {
    throw new RuntimeException( "Invalid base url for solrj.  The base URL must not contain parameters: "+_baseURL );
}

SolrQuery#setParamメソッドを使ってみます。このようにして、追加のリクエスト パラメータを追加できる場合がありますが、これは Solr リクエスト ハンドラによって無視されます。

于 2011-12-12T19:30:01.113 に答える