2014-09-14 2 views
0

У меня есть ниже scanario: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[rating:1.0]----------->product2[productId: 10] 

Я должен сортировать product на основе рейтинга (рассчитывается на основе всех rating coming on product). означает продукт с высоким рейтингом сверху, затем ниже .... вот так.

Как я могу это сделать

ответ

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. Затем он применяет преобразование к каждому ребру, проходящему через трубу, где край преобразуется в Map, который содержит входящую вершину для края и свойство «weight» из края. Затем вы можете применить отличную нисходящую сортировку (обозначенную минусом) по значению «вес» в этом Map.

+0

Я попробую. –