0

我只需要从 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有“rows”和“start”,但这些不能跳过项目,所以我需要用一个单独的查询来获取每个项目,这是低效的。我也在考虑实现一个过滤器查询,它只会过滤掉项目 2...99、192...199,但我不知道如何实现它。

4

1 回答 1

0

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

于 2012-07-12T18:00:35.747 回答