我想让 Solr 始终检索通过搜索找到的所有文档(我知道 Solr 不是为此而构建的,但无论如何),我目前正在使用以下代码执行此操作:
...
List<Article> ret = new ArrayList<Article>();
QueryResponse response = solr.query(query);
int offset = 0;
int totalResults = (int) response.getResults().getNumFound();
List<Article> ret = new ArrayList<Article>((int) totalResults);
query.setRows(FETCH_SIZE);
while(offset < totalResults) {
//requires an int? wtf?
query.setStart((int) offset);
int left = totalResults - offset;
if(left < FETCH_SIZE) {
query.setRows(left);
}
response = solr.query(query);
List<Article> current = response.getBeans(Article.class);
offset += current.size();
ret.addAll(current);
}
...
这可行,但如果查询超过 1000 次点击,则速度会很慢(我在这里读到过。这是由 Solr 引起的,因为我每次都在设置开始 - 出于某种原因 - 需要一些时间)。有什么更好(更快)的方法来做到这一点?