SOLR Pagination



我是SOLR的新手,我正在使用SOLRQuery查询数据库并返回下载的数据。返回的行数以百万为单位。

流程类似于在 GUI 中,单击通过 REST>的下载按钮,java 代码使用 SOLRQuery 获取数据并将其返回到 GUI,在那里数据作为文件下载。

由于行数太多,我几乎不担心获取数据和下载文件所需的时间。那么,是否需要在 SOLR 查询级别进行分页?我的意思是我应该使用 SOLR 查询的深度分页来提高性能吗?我添加了如下代码:

HttpSolrServer searcherServer = new HttpSolrServer(url);
SolrQuery solrQuery = new SolrQuery();
solrQuery.setRequestHandler("/export");
solrQuery.setQuery(query);
solrQuery.set("fl","field1");
solrQuery.setSort(SolrQuery.SortClause.asc("field1"));
QueryResponse resp = searcherServer.query(solrQuery);

在 Schema 中.xml我将 docValues="true" 添加到 field1 中,在 solrconfig 中.xml我添加了此处给出的 https://home.apache.org/~ctargett/RefGuidePOC/jekyll-full/exporting-result-sets.html

有一个用于导出结果集的专用 requestHandler - /export请求处理程序。这是针对这些情况优化的,在这些情况下,你将返回数百万行,并希望返回完整的命中集。

导出请求处理程序有几个要求:

要排序和导出的所有字段都必须将 docValues 设置为 true。

所有查询都必须包含排序和 fl 参数,否则查询将返回错误。

http://localhost:8983/solr/core_name/export?q=my-query&sort=severity+desc,timestamp+desc&fl=severity,timestamp,msg

导出结果集 Wiki 页面详细介绍了请求处理程序。

最新更新