Solr网址的会话ID

时间:2011-12-12 19:19:46

标签: java solr solrj jsessionid

我正在尝试向运行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。基本URL不得包含参数

有人可以指出我如何将唯一的会话ID转发到Solr服务器,以便在目标Solr服务器中设置的tomcat阀门选择session-id用于记录目的吗?

谢谢

1 个答案:

答案 0 :(得分: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请求处理程序应该忽略这些参数。