如何对Stream排序的Feed进行分页?

时间:2017-11-30 01:55:05

标签: getstream-io

当我在“Custom Ranking”下的Stream文档中遇到这一行时,我非常深入地将Stream集成到我现有的分页实现中(也用于对存储在MySQL中的非活动数据进行分页):< / p>

  

请注意:offsetid_lt不能用于阅读排名的Feed。请改为使用score_lt进行分页。

这似乎是文档中唯一提及score_lt的内容。我无法在其他任何地方找到它,也无法找到它的价值应该是什么的例子。如果我对未排名的Feed进行分页,它是否应该与id_lt使用的UUID相同?或者它是否意味着某种类型的分数值只能由排名的Feed返回?

通常情况下,我只是尝试看看,但排名Feed只适用于付费计划,而我仍在评估Stream。

这可能会对我如何实现分页产生重大影响,因为如果我继续使用Stream,我希望将来能够使用排名的Feed。

2 个答案:

答案 0 :(得分:2)

使用特定排名配置从排名Feed中检索活动时,每项活动都会包含score属性。您可以使用score_lt对已排名Feed中的项目(以及limit参数)进行分页。

(在对未排名的Feed中的项目进行分页时,我们通常建议使用id_lt参数,该参数将按创建日期按照从最近到最近的时间顺序返回活动。但是,由于排名Feed中的旧内容排名可能高于新内容,因此我们必须通过score属性进行分页和排序。)

-

每当您创建排名Feed时,您都会创建至少一个排名Feed Feed。我将命名我的排名Feed ranked-feed-config-one(您可以拥有与您一样多的人),这看起来像这样:

{
    "score": "decay_linear(time) * popularity ^ 0.5",
    "defaults": {
        "popularity": 1
    }
}

每当您将新活动发送到流中时,您还会提供可选的popularity参数。 (如果您不提供,popularity将默认为1。)

然后,每当您从排名的Feed中检索活动时,您都可以指定您要使用的排名配置(ranked-feed-config-one),如下所示:

someFeed.get({ ranking: 'ranked-feed-config-one' })

每个活动都将以score属性返回(并按其排序)。您将保存最后一个score属性,并在为将来的分页调用提供score_lt参数时使用该属性。

-

希望这有助于清理事情!让我知道是否有其他任何我可以帮助你解决的问题。

答案 1 :(得分:0)

您可以使用Limit & Offset Pagination

someFeed.get({limit:20, offset:20})