我正在尝试将查询发送到运行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:的无效基本URL
  solrj。基本网址不得包含参数


有人可以指出我如何将唯一的会话ID转发到Solr服务器,以便由目标Solr服务器中设置的tomcat阀选择会话ID以便进行日志记录?

谢谢

最佳答案

我认为实际的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请求处理程序应该忽略这些参数。

10-06 01:06