1

我正在通过 solr 进行搜索。它给了我 json 的响应。如下所示:

 {response
 {numfound:# , docs{
  [
   {
    id="#"
    model="#"
   }
   {
    id="#"
    model="#"
   }
  ]
  }
  }

我想从中提取 id 并从中制作 java 数组列表。

有人可以告诉我如何用编码语言做到这一点吗?

问题:如果我在java中使用hashmap或objectmapper,如何从子字符串中提取id然后转换为java数组列表?

谢谢

4

3 回答 3

1

如果您想转换成 java 对象,您可以使用 Solr 客户端Solrj
Solrj 将为您提供查询 Solr 和读取 xml 以转换成 java 对象的简单选项
对于 JSON,您可以使用 jackson 库来解析 Solr 响应。

于 2013-02-08T18:50:48.950 回答
1

这是一个使用 Gson 库读取数据的小程序。

@Test
public void testRead() throws IOException {
    final String testUrl = "http://localhost:8983/solr/collection1/select?q=*%3A*&wt=json&indent=true";
    String out = new Scanner(new URL(testUrl).openStream(), "UTF-8").useDelimiter("\\A").next();
    SolrResult result = new Gson().fromJson(out, SolrResult.class);
    List<String> ids = new ArrayList<String>();
    for (Doc doc : result.response.docs) {
        ids.add(doc.id);
    }
    System.err.println(ids);
}

它使用以下三个小类作为响应的 Java 表示:

public class SolrResult {
    public Response response;
}

class Response {
    public int numFound;
    public int start;
    public List<Doc> docs;
}

class Doc {
    public String id;
}

我希望这有帮助。

于 2013-10-25T13:57:42.103 回答
0

正如 Jayendra 指出的那样,如果您使用 Java 查询 Solr,则可以使用SolrJ 。由于 XML 解析开销,我不建议使用 XML 作为响应格式。SolrJ 支持开箱即用的 java 二进制对象编码(使用 commons-codec),并且默认情况下在查询上

要在更新中使用它,您必须使用手动设置它

server.setRequestWriter(new BinaryRequestWriter());

您还必须在服务器上启用 BinaryUpdateHandler ,使用:

 <requestHandler name="/update/javabin" class="solr.BinaryUpdateRequestHandler" />

如果您不想使用 SolrJ,您可以使用GSON解析它。在这里你有和例子。

于 2013-02-09T08:44:14.657 回答