2013-03-05 2 views
0

JUNGs PageRank 알고리즘을 기존 neo4j 그래프 데이터베이스로 실행하고 향후 참조를 위해 노드 점수를 속성으로 저장하려고합니다. Gremlin : 기존 그래프 데이터베이스에 반복적으로 설정하십시오.

그래서 나는 다음과 같은 그루비 파일 생성 :

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)} 

및 놈아을 통해 실행합니다.

부드럽게 돌아가고 내가 g.v(2381).map()을 통해 속성을 확인했다면 기대했던 것만 얻었습니다.

그러나 gremlin을 종료하고 neo4j 서버를 시작하면 이러한 수정 사항은 존재하지 않습니다.

누구나 왜이 문제를 해결할 수 있습니까?

gremlin> g 
==>neo4jgraph[EmbeddedGraphDatabase [/path/to/graph.db]] 

어떤 아이디어 :

내 직감은 포함되지 놈아 내 그래프 함께 할 수있는 뭔가가있다?

답변

2

Groovy 스크립트의 끝 부분에 g.shutdown()이 필요합니다. g.shutdown()이 없으면 그래프의 모든 변경 사항이 메모리에 남아있을 가능성이 큽니다. 디스크에서 그래프 (자신의 경우 /path/to/graph.db)를 다시 초기화하면 메모리에 남아있는 변경 사항이 손실됩니다. g.shutdown()은 현재 트랜잭션을 메모리에서 디스크로 플러시합니다. 이렇게하면 변경 사항이 지속되고 데이터베이스에 다시 액세스하려고 할 때 검색됩니다.

희망이 도움이됩니다.

: 당신은 임베디드 데이터베이스의 직감에 정확합니다. 모든 REST API 요청이 단일 트랜잭션으로 처리되므로 Neo4j의 REST 인터페이스를 사용하면이 문제가 발생하지 않습니다.

+0

완벽하게 일했다! 빠른 답변 감사합니다! – zanbri

+0

@ 잔 브리 : 문제 없음 :) – rhetonik

관련 문제