具有范围和100个记录限制的Objectify filter()确实总是返回相同的结果,是否有办法在给定的匹配条件上获得100个随机记录???
示例: 假设我有一个得分字段索引(在GAE实体排行榜中),我想在其中获取记录,其中得分范围为0到10,限制为100个记录我确实得到相同的结果(考虑到那里)数据记录没有变化)。我理解这纯粹与索引的位置有关,在索引中,数据可以按ASC顺序存储和排序,任何时候你查询我们可能会得到相同的结果?
考虑到我们有1000条记录b / w 0-100得分范围,是否有GAE客体化方法可以取出匹配相同条件的随机100条记录???
答案 0 :(得分:1)
根据您的具体需求,您可以使用GAE内置的__scatter__
属性:
https://code.google.com/p/appengine-mapreduce/wiki/ScatterPropertyImplementation
答案 1 :(得分:0)
了解数据存储区的索引,编号
数据存储区读取其索引,索引已预先排序,因此它将始终返回SAME值。
获得这种“随机发生器”效果的唯一方法是获取1000个记录并随机选择其中的100个,或者为您想要的1000个记录创建一个自动递增的数字,然后抓住一个随机间隔为100.
编辑:根据OP的建议,另一种解决方案是预取一个简单的计数,然后随机生成一个偏移数来抓取随机数据。 (为了在一个地方提供所有解决方案而添加到答案中)