gpt4 book ai didi

python - 多个种子节点的遍历

转载 作者:行者123 更新时间:2023-12-01 05:14:25 25 4
gpt4 key购买 nike

我编写了一个快速脚本,通过 Neo4j 的遍历框架 REST API 运行遍历查询:

from py2neo import neo4j
import requests
import json

dbURI = 'http://localhost:7474/db/data/'

def graphTraversal (nodeId):
returnType = 'path'

payload = {
'order': 'breadth_first',
'uniqueness': 'node_global',
'relationships': [{
'direction': 'all',
'type': 'associatedMusicalArtist'
}],
'max_depth': 2
}
payload = json.dumps(payload)

headers = {
'Accept': 'application/json; charset=UTF-8',
'Content-Type': 'application/json'
}

uri = dbURI + '/node/' + nodeId + '/traverse/' + returnType
print '\n> Traversal of ' + uri + ' ...'
res = requests.post(uri, data=payload, headers=headers)
print res.text
return res.json();

def getNodeByUri (db, key, value):
return db.get_indexed_node('nodeIdx', key, value)

def getNodeId (node):
return str(node._id)

def main ():
db = neo4j.GraphDatabaseService(dbURI)

node = getNodeByUri(db, '__URI__', 'http://dbpedia.org/resource/Jimi_Hendrix')
nodeId = getNodeId(node)

rels = graphTraversal(nodeId)

if __name__ == '__main__':
main()

代码运行良好,但我有一个问题:

  • 如何使用多个种子/根节点运行相同的遍历?

我知道 Java 驱动程序允许这样做,但对于 Python,文档并不清楚如何做到这一点。

提前致谢!

编辑:这是 Neo4j's traversal framework REST API 文档的链接我正在关注。

最佳答案

没有直接的方法可以做到这一点,遍历端点都是单节点。

您可以使用 Batch API 来完成此操作,在单个 HTTP 请求中发送大量遍历请求。看看这里:

http://docs.neo4j.org/chunked/stable/rest-api-batch-ops.html

但是

对于您正在运行的遍历,您可以轻松地用 Cypher 表达它,然后您可以给它多个起点,如下所示:

START n=node(1,2,3,4,5) MATCH (n)-[:associatedMusicalArtist*0..2]-(other) RETURN other

然后您可以将其发送到事务端点:

http://docs.neo4j.org/chunked/stable/rest-api-transactional.html

关于python - 多个种子节点的遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com