格雷姆林分页

时间:2018-10-10 11:35:47

标签: pagination gremlin tinkerpop tinkerpop3 janusgraph

我正在尝试在Gremlin中进行分页。我遵循了on gremlin recipes.提供的解决方案,所以现在我正在使用range()步骤截断结果。这行之有效,是因为当用户要求提供x个结果ID时,仅查询其中的x个结果,而不会执行完全搜索,这将大大加快搜索速度。

但是在Gremlin文档中却指出:

  

遍历的结果永远不会排序,除非通过order()步骤明确地进行了排序。因此,永远不要依赖TinkerPop3发行版之间甚至发行版中的迭代顺序(因为遍历优化可能会改变流程)。

顺序对于分页确实很重要(我们不希望用户在不同页面上获得相同的结果)。

添加order()确实会减慢查询速度,因为它必须查询适用于搜索的所有顶点,然后用range()截断它。

有什么想法可以解决这个问题,以确保查询之间的一致性,并且对于不完全搜索仍然有更少的查询时间?

1 个答案:

答案 0 :(得分:2)

该文档是正确的,但可以使用其他一些上下文。没有order(),就不能保证您有特定的顺序,除非基础图形数据库保证了该顺序。 TinkerPop应该保留该保证(如果存在)。因此,最终您需要考虑基础图的作用。

在使用JanusGraph时,我很确定它不能保证结果迭代的顺序,但是要注意的是,这取决于您执行索引的类型。您可以阅读有关here的更多信息,但可能想在JanusGraph user list上提出具体问题。