我正在学习在Neo4j中使用Gremlin。
我有以下标签结构:运动 - > (相关) - >足球 - > (相关) - >比利时。
在每个标签上我都有相关的Feed。在每个Feed中,我有几个项目(新闻)。
当我搜索体育的饲料时,也想把所有与足球和比利时(他的相关标签)相关联。
使用Cypher我得到了这个查询的结果:
START tag = node(106949)MATCH标签 - [: FILHA * 1..10] - > fof WITH fof MATCH fof - [: USA ] - >饲料RETURN饲料LIMIT 10;
使用Gremlin我可以获得与Sport标签相关的所有标签:
x = []; gv(106949).as(“tagsFilha”)。out(“ FILHA ”)。aggregate(x).loop(“tagsFilha”){it.loops&lt ; 10} .iterate(); X
Gremlin可以捕获标签(Sport)的新闻源,如下所示:
GV(的StartNode).OUT( “ USA ”)。出来( “ CONTEM ”)。排序{it.qtde_visualizacoes} ._()[0 .. 10]
但是上面的查询没有返回与相关标签相关的新闻。例如:搜索体育也可以得到Tag Belgium的消息(他的相关标签)。
有人能给我一个参考吗?
谢谢!
答案 0 :(得分:0)
我不确定我是否完全遵循您的架构,但如果您已经在x
中使用了所有Sport标签:
x=[];g.v(106949).as("tagsFilha").out("FILHA").aggregate(x).loop("tagsFilha"){it.loops < 10}.iterate();x
并且您知道这会为您提供Feed:
g.v(startNode).out("USA").out("CONTEM").sort{it.qtde_visualizacoes}._()[0..10]
那么为什么不只是从x
启动一个管道来以相同的方式获取源:
x._().out("CONTEM").sort{it.qtde_visualizacoes}._()[0..10]
因此,换句话说,对于层次结构中的所有标记,只需遍历到Feed。