Gremlin:根据评级排序

时间:2014-09-14 13:27:26

标签: gremlin

我在scanario之下:

User1------------rated[rating:3.0]----------->product1[productId: 1]
User2------------rated[rating:2.0]----------->product1[productId: 1]


User3------------rated[rating:4.0]----------->product2[productId: 10]
User4------------rated[rating:1.0]----------->product2[productId: 10]

我必须根据评分排序product(根据所有rating coming on product计算)。意味着产品在顶部具有较高的评级,然后较低......就像那样。

我该怎么做

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标。这是一种将您的问题转换为标准TinkerPop玩具图的方法(按“权重”属性排序顶点,类似于您的“评级”属性):

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).outE.transform{[v:it.inV.next(),weight:it.getProperty("weight")]}.sort{-it.weight}
==>{v=v[4], weight=1.0}
==>{v=v[2], weight=0.5}
==>{v=v[3], weight=0.4}

上面的代码基本上遍历了id = 1的顶点的out边缘。然后,它将变换应用于通过管道的每条边,其中边将转换为Map,其中包含边的入口顶点和边的“weight”属性。然后,您可以对Map中的“权重”值应用常规降序排序(由减号表示)。

相关问题