我正在尝试向运行 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");
当我运行服务器时,出现以下异常:
nested exception is java.lang.RuntimeException: Invalid base url for solrj. The base URL must not contain parameters
有人可以指出如何将唯一的 session ID 转发到 Solr 服务器,以便目标 Solr 服务器中设置的 tomcat 阀门选择该 session 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 请求处理程序忽略。
关于java - Solr url 的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479606/