【问题标题】:SOLR - DataImportHandler - how to map multiple objects inside one list of json objectsSOLR - DataImportHandler - 如何在一个 json 对象列表中映射多个对象
【发布时间】:2017-02-27 10:15:28
【问题描述】:

我是 SOLR 的新手,我正在尝试使用 SOLR 索引 oracle DB 查询结果。我已经编写了 config.xml 并在 schema.xml 中添加了索引。

我的 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 查询响应。

【问题讨论】:

    标签: solr dih


    【解决方案1】:

    如果你使用 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"));
    

    【讨论】:

    • 感谢您的回复,我想我们可以在 java 中修改 solr 响应。但是有什么方法可以修改 config.xml 文件,以便在查询后即使有任意数量的客户端进行查询,我们也应该得到结构化的响应?
    • 有没有办法在服务器端做到这一点,我正在寻找一种可扩展的方式。这样多个客户端可以在这里使用solr。
    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多