Gremlin 小精灵:可以';t排序边并返回顶点

Gremlin 小精灵:可以';t排序边并返回顶点,gremlin,tinkerpop-frames,Gremlin,Tinkerpop Frames,我正在尝试编写一个小精灵查询,使用Tinkerpop框架遍历图形 以下是我的代码: @GremlinGroovy("it" + ".outE" + ".filter{it.label=='usedwith'}" + ".sort{-it.weight}" + ".toList()" + ".reverse()" + "[start, 'start+siz

我正在尝试编写一个小精灵查询,使用Tinkerpop框架遍历图形

以下是我的代码:

@GremlinGroovy("it"
            + ".outE"
            + ".filter{it.label=='usedwith'}"
            + ".sort{-it.weight}"
            + ".toList()"
            + ".reverse()"
            + "[start, 'start+size']"
            +"._"
            + ".inV")
public Iterable<Ingredient> getMostUsedWith(@GremlinParam("start") int start, 
                                            @GremlinParam("size") int size);
@GremlinGroovy(“它”
+“.outE”
+“.filter{it.label=='usedwith'}”
+“.sort{-it.weight}”
+“.toList()”
+“.reverse()”
+“[开始,'开始+大小']””
+"._"
+“.inV”)
public Iterable getMostUsedWith(@GremlinParam(“start”)int start,
@GremlinParam(“大小”)int size);
我基本上想要从我的当前顶点获取所有边,类型为“usedwith”,根据权重属性对它们进行向下排序,然后从这些边所指向的顶点列表中获取一个页面


遗憾的是,这段代码不起作用,并且抛出了很多错误。你能修改一下吗?

也许你可以将你的查询写为:

it.outE('usedwith').order{it.b.weight <=> it.a.weight}.inV[start..(start + size)]
it.outE('usedwith').order{it.b.weight it.a.weight}.inV[start..(start+size)]

1)您为什么
revese
列表而不是按升序排序?2)
[start,‘start+size']
的目的是什么?从开始到(开始+大小)或长度为2且元素位于开始和(开始+大小)的列表切片?这部分没有包含在您的描述中(如何防止边界外异常?)。我认为框架处理边界外异常。它在这里工作正常。在你的回答中,我打算做的一切你都做对了。谢谢你的帮助。显然我犯了一些愚蠢的错误。你推荐任何关于Gremlin的教程吗?嗯……我认为最好的办法是在REPL中的toy graph()上使用各种命令。在gremlin shell中键入
g=TinkerGraphFactory.createTinkerGraph()
,然后从API页面()运行示例命令。请注意,此页面是为gremlin 2设计的,dsl中的许多内容都因tinkerpop 3 afaik而改变。祝你好运,玩得开心!例如,对于您的问题,您可以在玩具图上运行:
g.v(1).outE('knows').order{it.b.weight it.a.weight}.inV[0..1]