Groovy Gremlin:SetProperty迭代到现有图形数据库

Groovy Gremlin:SetProperty迭代到现有图形数据库,groovy,neo4j,jung,pagerank,gremlin,Groovy,Neo4j,Jung,Pagerank,Gremlin,我试图在现有的neo4j图形数据库上运行JUNGs PageRank算法,并将节点的分数保存为属性以供将来参考 因此,我创建了以下groovy文件: import edu.uci.ics.jung.algorithms.scoring.PageRank g = new Neo4jGraph('/path/to/graph.db') j = new GraphJung(g) pr = new PageRank<Vertex,Edge>(j, 0.15d) pr.evaluate(

我试图在现有的neo4j图形数据库上运行JUNGs PageRank算法,并将节点的分数保存为属性以供将来参考

因此,我创建了以下groovy文件:

import edu.uci.ics.jung.algorithms.scoring.PageRank

g  = new Neo4jGraph('/path/to/graph.db')
j = new GraphJung(g)

pr = new PageRank<Vertex,Edge>(j, 0.15d)
pr.evaluate()
g.V.sideEffect{it.pagerank=pr.getVertexScore(it)}

有什么想法吗?

在groovy脚本的末尾需要一个
g.shutdown()
。如果没有
g.shutdown()
图形的所有更改都很可能保留在内存中。从磁盘重新初始化图形(
/path/to/graph.db
),将丢失仍在内存中的更改
g.shutdown()
将当前事务从内存刷新到磁盘。这将确保您的更改保持不变,并在您再次尝试访问数据库时检索到这些更改

希望这有帮助


注意:您对嵌入式数据库的预感是正确的。如果使用Neo4j的REST接口,则不会出现此问题,因为每个REST API请求都被视为一个事务。

工作得非常好!!谢谢你的快速回复!
gremlin> g
==>neo4jgraph[EmbeddedGraphDatabase [/path/to/graph.db]]