0

在我的项目中有一个检索文档列表的服务。到目前为止,检索它们的方法是使用分页对象,这样我们就不会将所有元素发送回前端。

    public Page<Document> findDocumentPage(Pageable pageable) {
        return this.documentService.findAllByPage(pageable);
    }

问题是我需要所有页面的文档的全局索引。例如,假设我有一个页面列表,其中包含查询后的结果:

 firstResult:{
        page: 1,
        document_list: [{doc:{ id: a, content: ''}},
                        {doc:{ id: b, content: ''}},
                        {doc:{ id: c, content: ''}}]
    }

    secondResult:{
        page: 2,
        document_list: [{doc:{ id: d, content: ''}},
                        {doc:{ id: e, content: ''}},
                        {doc:{ id: f, content: ''}}]
    }

这些结果彼此独立。有没有办法告诉 id 为“e”的文档是所有页面结果中的第 5 个元素,而无需访问前一页的结果。页面也可以有不同的大小,有些可能有 30 个结果,其他 20 个,可以是 x。

我可以在后端存储一个包含前一页元素数量的列表,然后根据页码、当前页面上的索引和前一页的大小计算索引。然而,这对我来说似乎不是一个很好的解决方案。

4

1 回答 1

0

如果您有Page代表结果之一,则可以像这样轻松计算该页面中的所有元素(模数误差):

globalIndex = page.getPageable().getOffset() + localIndex

localIndex中相关元素的索引在哪里page.getContent()

于 2020-11-03T10:19:22.350 回答