これはバッチ ローダーを使用して行うことができますが、Gremlin スクリプトを使用する方が簡単です。
ノード ID ペアのリストの場合nodelist
、エッジをバッチでロードする Gremlin スクリプトを次に示します (未テスト)...
// gremlin.groovy
def batch_load(nodelist, label) {
g.setMaxBufferSize(0)
g.startTransaction()
try {
for (entry in nodelist) {
s_id = entry[0]
d_id = entry[1]
// if s_id and d_id are actual node IDs, you don't need to use an index...
sn = g.idx('someindex').get('nid',s_id)[0]
dn = g.idx('someindex').get('nid',d_id)[0]
g.addEdge(sn,dn,label)
}
g.stopTransaction(TransactionalGraph.Conclusion.SUCCESS)
return true
} catch (e) {
g.stopTransaction(TransactionalGraph.Conclusion.FAILURE)
return e
}
}
Bulbs で実行する方法は次のとおりです。これを neo4jrestclient 用に変更する必要があります...
>>> from bulbs.neoj4server import Graph
>>> g = Graph()
>>> g.scripts.update('/path/to/gremlin.groovy')
>>> script = g.scripts.get('batch_load')
>>> params = dict(nodelist=your_node_list, label="follows")
>>> g.gremlin.execute(script, params)