与Neo4j中的Gremlin聚合以获取相关新闻

时间:2013-10-09 12:03:35

标签: neo4j cypher gremlin

我正在学习在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的消息(他的相关标签)。

有人能给我一个参考吗?

谢谢!

1 个答案:

答案 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。