Solr / SolrJ: как перебирать результаты без создания гигантского списка ArrayList

Есть ли способ перебрать ответ Solrj так, чтобы результаты извлекались постепенно во время итерации, вместо того, чтобы возвращать гигантский в памяти ArrayList ?

Или мы должны прибегнуть к следующему:

    SolrQuery query = new SolrQuery();
    query.setQuery("*:*");
    int fetchSize = 1000;
    query.setRows(fetchSize);
    QueryResponse rsp = server.query(query);

    long offset = 0;
    long totalResults = rsp.getResults().getNumFound();

    while (offset < totalResults)
    {
        query.setStart((int) offset);  // requires an int? wtf?
        query.setRows(fetchSize);

        for (SolrDocument doc : server.query(query).getResults())
        {
             log.info((String) doc.getFieldValue("title"));
        }

        offset += fetchSize;
    }

И пока я говорю по теме, почему SolrQuery.setStart () требует целого числа , когда ] SolrDocumentList.getStart () / getNumFound () return long ?

5
задан George Armhold 19 February 2011 в 14:53
поделиться