我在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
计算)。意味着产品在顶部具有较高的评级,然后较低......就像那样。
我该怎么做
答案 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
中的“权重”值应用常规降序排序(由减号表示)。