2013-03-11 16 views
6

Podczas korzystania z SOLRJ chciałbym wiedzieć, jak mogę przekonwertować obiekt SolrQuery do jego reprezentacji URL ze składnią zapytań SOLR. Próbowałem użyć metody .toString(), ale nie zwraca ona poprawnej reprezentacji zapytań. Czy jest jakiś inny sposób, aby to zrobić?Jak mogę przekształcić SolrQuery (SOLRJ) na URL?

Odpowiedz

7

W tej sprawie polecam ClientUtils.toQueryString.

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

w kodzie źródłowym HttpSolrServer Widać, że jest on używany przez kod samego tego powodu Solrj.

public NamedList<Object> 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 

    } 
1

SolrJ (testowane wersja 6.6.0) to jest:

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