如何将SolrQuery(SOLRJ)转换为URL?

在使用SOLRJ时,我想知道如何使用SOLR查询语法将SolrQuery对象转换为其URL表示。 我尝试使用.toString()方法,但它没有返回正确的查询表示。 还有其他方法怎么做?

我推荐ClientUtils.toQueryString用于此事。

@Test public void solrQueryToURL() { SolrQuery tmpQuery = new SolrQuery("some query"); Assert.assertEquals("?q=some+query", ClientUtils.toQueryString(tmpQuery, false)); } 

在HttpSolrServer的源代码中,您可以看到Solrj代码本身就是出于此原因使用它。

 public NamedList request(final SolrRequest request, final ResponseParser processor) throws SolrServerException, IOException { // ... other code left out if( SolrRequest.METHOD.GET == request.getMethod() ) { if( streams != null ) { throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "GET can't send streams!" ); } method = new HttpGet( baseUrl + path + ClientUtils.toQueryString( params, false ) ); // ... other code left out } 

SolrJ(测试版本6.6.0)它是:

 @Test public void solrQueryToURL() { SolrQuery query = new SolrQuery("query"); Assert.assertEquals("?q=query", query.toQueryString()); }