2015-12-22 94 views
0

我使用httpclient從java代碼查詢solr服務器。現在我只想使用solrj庫轉換我的所有代碼。我無法找到任何適當的文件。 我現有的代碼是這樣的使用Solrj將Json字符串傳遞到查詢solr

HttpURLConnection conn = (HttpURLConnection) new URL(url.toString()).openConnection(); 
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
conn.setRequestProperty("Content-Type", "application/json"); 
conn.setRequestProperty("Accept", "*/*"); 
conn.setInstanceFollowRedirects(false); 
OutputStream os = conn.getOutputStream(); 
os.write(inputJson.getBytes()); 
os.flush(); 
os.close(); 
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
//read resp from rd 

如何做好使用solrj一樣嗎?這裏是使用捲曲相同的文檔JSON Request API

我想發送inputJson字符串作爲請求正文。這個Json字符串可能包含任何動態鍵值。這是可行的,因爲我已經顯示使用http休息調用。但如何使用solrj做同樣的事情?

回答

0

下面是一個簡單的查詢例如,通過SolrJ

package eric.search.solr.solrj; 

import java.io.IOException; 

import org.apache.solr.client.solrj.SolrClient; 
import org.apache.solr.client.solrj.SolrQuery; 
import org.apache.solr.client.solrj.SolrServerException; 
import org.apache.solr.client.solrj.impl.HttpSolrClient; 
import org.apache.solr.client.solrj.response.QueryResponse; 
import org.apache.solr.common.SolrDocumentList; 

/** 
* SolrJ test - solr5 
* 
* @author eric 
* @date Aug 7, 2015 3:56:08 PM 
*/ 
public class Solrj5Test { 
    // query via edismax - test 
    public static void queryEdismaxTest() { 
     String coreUrl = "http://localhost:8983/solr/search_cn"; 
     SolrClient client; 
     try { 
      // create client 
      client = new HttpSolrClient(coreUrl); 

      // create query, 
      SolrQuery query = new SolrQuery(); 

      query.setQuery("java"); // q 
      query.addFilterQuery("authors:布魯斯"); // fq 
      // query.setFields("id", "cn_name", "en_name", "authors"); // fl 
      query.setStart(0); // start 
      query.setRows(10); // rows 
      query.set("defType", "edismax"); // defType 
      query.set("qf", "cn_name"); // qf 

      // get response 
      QueryResponse response = client.query(query); 

      // get documents 
      SolrDocumentList docList = response.getResults(); 

      System.out.printf("doc count: %d\n", docList.size()); 
      client.close(); 
     } catch (SolrServerException | IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     queryEdismaxTest(); 
    } 
} 

SolrJ會導致包裝成Java對象,如果u想要得到的原始輸出爲JSON。然後我建議你使用像HttpClient這樣的工具通過solr web的url檢索結果,然後通過Jackson將結果解析爲json樹JsonNode