2017-02-27 135 views
0

我是SOLR的新手,我試圖使用SOLR爲索引oracle數據庫查詢結果編制索引。我也編寫了config.xml並在schema.xml中添加了索引。SOLR - DataImportHandler - 如何在一個json對象列表中映射多個對象

我在我的config.xml文件中有多個查詢作爲子實體(具有child = true)。許多查詢都返回多行。比如我有一個實體

<entity name="example_subentity" child="true" query="SELECT A,B from table_temp"> 
    <field column="A" name="a" /> 
    <field column="B" name="b" /> 
</entity> 

返回輸出

"response":{"numFound":1,"start":0,"docs":[ 
     { 
     "unique_key":"4493234234", 
     "_version_":1560479076226957312, 
     "_childDocuments_":[ 
     { 
      "a" : "value_a_1", 
      "b" : "value_b_1", 
     }, 
     { 
      "a" : "value_a_2", 
      "b" : "value_b_2", 
     }] 
     }]} 

什麼,我想在這裏實現的是,像

"_childDocuments_":[ 
     {"table_temp_response" :[ 
     { 
      "a" : "value_a_1", 
      "b" : "value_b_1", 
     }, 
     { 
      "a" : "value_a_2", 
      "b" : "value_b_2", 
     }] 
     }] 

任何人都可以指導我,我怎麼可以使用DIH獲得這種輸出嗎?

只是一個更新我正在尋找一個服務器端解決方案,我可以在客戶端使用java或SOLRJ來做到這一點。但我有多個客戶端正在使用SOLR查詢響應。

回答

0

如果使用Solrj

JSONArray jArray = new JSONArray(); 

     for (int i = 0; i < docList.size(); i++) { 
      JSONObject json = new JSONObject(docList.get(i)); 
      jArray.put(json); 
     } 

>

for (int i = 0; i < jArray.length(); i++) { 
      JSONObject obj = objs.getJSONObject(i); 
      obj.getString("a")); 
+0

感謝響應,我想我們可以修改的Java Solr的響應。但有什麼辦法可以修改config.xml文件,以便在查詢後我們應該得到結構化的響應,即使有任何數量的客戶端正在進行查詢? –

+0

有沒有辦法在服務器端做到這一點,我正在尋找一種可擴展的方式。這樣多個客戶可以在這裏使用solr。 –