Gremlin 小精灵:基于评级的排序

Gremlin 小精灵:基于评级的排序,gremlin,Gremlin,我有以下几点: 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[

我有以下几点:

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]
我必须根据评级对
产品
进行排序(根据产品上的所有
评级进行计算)。指的是顶部评级较高,然后较低的产品……就像这样


如何做到这一点

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

上面的代码基本上遍历id=1的顶点的外边缘。然后对通过管道的每条边应用变换,其中边将转换为包含边的传入顶点和边的“权重”特性的
贴图。然后可以对
映射中的“weight”值应用groovy降序排序(由减号表示)

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}