[英]How to find common vertex count and sort the result in Gremlin?
我的架構有兩種類型的節點,
node1:學生(id為主鍵) node2:技能(SkillName為主鍵)他們之間的關系是HAS_SKILL
我的用例:對於給定的學生 ID,我需要獲取相似的用戶、技能計數和技能匹配最多的常用技能列表。
我試過的查詢:
g.V().has('Student','id','test1').
out('HAS_SKILL').
inE('HAS_SKILL').
group().
by(outV().values('userId')).
unfold().
project('id','count').
by(select(keys)).
by(select(values).count(local)).
order().
by('count',desc)
此查詢提供相似的用戶和計數 bt 我無法獲得常用技能列表。如何實現?
使用以下步驟,我根據您的問題文本創建了一個示例圖表。
g.addV('Student').property('id','S1').as('s1').
addV('Student').property('id','S2').as('s2').
addV('Student').property('id','S3').as('s3').
addV('Student').property('id','S4').as('s4').
addV('Student').property('id','S5').as('s5').
addV('Skill').property('SkillName','cricket').as('cr').
addV('Skill').property('SkillName','football').as('fo').
addV('Skill').property('SkillName','golf').as('go').
addV('Skill').property('SkillName','volleyball').as('vo').
addE('HAS_SKILL').from('s1').to('cr').
addE('HAS_SKILL').from('s1').to('fo').
addE('HAS_SKILL').from('s2').to('fo').
addE('HAS_SKILL').from('s2').to('go').
addE('HAS_SKILL').from('s3').to('fo').
addE('HAS_SKILL').from('s3').to('cr').
addE('HAS_SKILL').from('s3').to('vo').
addE('HAS_SKILL').from('s4').to('cr').
addE('HAS_SKILL').from('s5').to('fo')
這些步驟構建了一個看起來像這樣的圖表
然后,我們可以使用沿着這些思路的查詢來查找常用技能列表。
g.V().has('Student','id','S1').
out('HAS_SKILL').as('common').
in('HAS_SKILL').
group().
by('id').
by(select('common').values('SkillName').fold()).unfold()
哪個生產
{'S3': ['cricket', 'football']}
{'S4': ['cricket']}
{'S5': ['football']}
{'S1': ['cricket', 'football']}
{'S2': ['football']}
然后,您可以從這些構建塊中獲取計數和任何其他所需信息。
g.V().has('Student','id','S1').
out('HAS_SKILL').as('common').
in('HAS_SKILL').
group().
by('id').
by(select('common').values('SkillName').fold()).
unfold().
project('id','count','skills').
by(keys).
by(select(values).count(local)).
by(select(values)).
order().
by('count',desc)
這給了我們最終的結果
{'id': 'S3', 'count': 2, 'skills': ['cricket', 'football']}
{'id': 'S1', 'count': 2, 'skills': ['cricket', 'football']}
{'id': 'S4', 'count': 1, 'skills': ['cricket']}
{'id': 'S5', 'count': 1, 'skills': ['football']}
{'id': 'S2', 'count': 1, 'skills': ['football']}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.