编辑: 我为NoSQL情况添加了一个更通用的方法答案。
我正在使用Riak(使用LevelDB)开展项目。
使用Riak提供的REST API,我能够根据索引和范围获取数据,该范围返回按索引排序的alpha-num结果和延续哈希值。
示例电话:
http://server/buckets/bucketname/index/someindex_int/333333333/555555555?max_results=10&return_terms=true&continuation=somehashhere
示例结果:
{
results: [
{
about_river: "12312"
},
{
balloon_tall: "45345"
},
{
basket_written: "23434523"
}
],
continuation: "g2987392479789879087987asdfasdf="
}
我也在进行单独的调用而没有指定max_results和return_terms来获取集合中文档的计数。我会知道每套文档的数量和文档的总数,这很容易让我们知道"页面的数量"。
虽然我能够根据哈希调用每组文档,然后接收结果集的下一个哈希,我正在寻找预测哈希的方法,因此预先填充客户端的分页链接。
这可能吗?散列是基于索引/范围信息动态还是由您返回数据的节点生成的随机值?
同事已经提到哈希基于您在群集中遇到的节点,但我无法找到有关此文档的文档。
其次,这个想法被提出来在背景中循环整个集合来获得哈希。这将有效,但似乎相当昂贵。
我是Riak的新手,这里的任何建议都会很棒。我无法找到任何与Riak分页的好例子。据我所知,确实存在的那个已经从互联网上消失了。
答案 0 :(得分:1)
不,延续不是可预测的"你的同事说的也不正确。
不幸的是,除了查询没有max_results
参数的范围外,没有办法知道指定范围内的对象总数(在索引键和对象键之间的1:1关系之外) ,显然)。
答案 1 :(得分:0)
另一个答案是我需要的答案,但在CodingHorror的帮助下,我想出了我想要的答案。
没有分页。没有分页,只有获取下一个结果集的哈希是没有问题的,事实上,它对我的用例来说是理想的。只需将下一组合并到现有的集合中即可。但是不要让它永远持续下去。
我的灵感:http://blog.codinghorror.com/the-end-of-pagination/
谢谢,杰夫阿特伍德!
答案 2 :(得分:0)
响应中的结果数量是否相同?
类似
string.gsub(/^([^=]*)=/,'\1***')