从查询中仅返回特定行(例如,每10日:#1,#11,#21 ......)

时间:2012-07-12 06:58:29

标签: solr solrj

我需要从Solr索引中仅获取特定的(第n行“)。例如,如果完整结果包含10000行,我只想接收每个100项目桶的第一行和最后一行。

第1项和第100项 项目101和200 项目201和300 ......

此分组是动态的,取决于结果的数量。因此,如果总共只有5000个结果行,则桶大小为50而不是100.我可以计算实际索引,但问题是如何从Solr中获取这些索引。

没有可以直接用作查询参数的索引字段。在实践中,我正在搜索“名称以A开头”(或其他一些字母),并希望收到以A开头的第1项,以A开头的第100项,以A等开头的第101项......

查询参数http://wiki.apache.org/solr/CommonQueryParameters有“行”和“开始”但这些不能跳过项目,因此我需要使用单独的查询来获取每个项目效率低下。我还在考虑实现一个过滤查询,它只会过滤掉项目2 ... 99,192 ... 199,但我不知道如何实现它。

1 个答案:

答案 0 :(得分:0)

我不知道一种简单的方法,但这会减少需要来回传递的数据量:使用通常的start和{{1}进行常规查询}参数,但告诉Solr只返回每个文档的ID字段(通过fl parameter)。在客户端代码中,存储第一个和最后一个文档的ID,然后使用rows的下一个值重复查询。到达搜索结果的末尾后,您将获得所需的文档ID列表。运行一个新查询并为其指定要返回的文档ID列表,这次获取完整文档。