我正在使用 solrj 迭代整个 solr。Solr 将返回包含 uuid 记录的页面,我正在我的 Fedora Commons Repository 中检查该 uuid。我想迭代整个 solr,就我而言,它可能需要长达一周的时间才能完成。到目前为止,它运行了 3 天,然后因与 solr 无关的错误而失败。
所以我问,有没有办法从某些特定的结果页面运行搜索?假设我总是记录我的最后一页,所以下次当我的程序失败时,我不需要从头开始运行它,而是从我的程序失败的最后一页运行它。有人可以帮忙吗?谢谢你。
我如何迭代 solr:
for (String model : models) {
try {
//SOLR
final String solrUrl = "http://localhost:1234/solr/test";
HttpSolrClient solr = new HttpSolrClient.Builder(solrUrl).build();
solr.setParser(new XMLResponseParser());
SolrQuery query = new SolrQuery();
query.setQuery("fedora." + model);
query.setRows(10);
query.addSort("PID", SolrQuery.ORDER.asc);
String cursorMark = CursorMarkParams.CURSOR_MARK_START;
boolean done = false;
while (!done) {
query.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark);
QueryResponse rsp = solr.query(query);
String nextCursorMark = rsp.getNextCursorMark();
for (SolrDocument doc : rsp.getResults()) {
....I do something with result
}
if (cursorMark.equals(nextCursorMark)) {
done = true;
}
cursorMark = nextCursorMark;
}
solr.close();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}