我需要使用 Python27 遍历 neo4j 图。
从手册中我看到我可以定义一个遍历并包含一个评估器,我得到了类似的东西。
def my_evaluator(path):
if (path.end['type'] == 'STOP') or (path.end['type'] == 'BUS_STOP'):
return Evaluation.EXCLUDE_AND_CONTINUE
else:
return Evaluation.INCLUDE_AND_CONTINUE
def get_passengers_with_bus_stop(db, start_node):
nodes = []
traverser = db.traversal()\
.relationships('STOPS_AT', INCOMING)\
.relationships('HAS_BEEN', OUTGOING)\
.evaluator(my_evaluator)\
.traverse(start_node)
# Name
for n in traverser.nodes.iterator():
nodes.append(n['name'])
return nodes
但是从返回的节点列表中,我想排除第一个节点,有时会停在某个深度。
如何使用定义 de neo4j 手册的遍历来做到这一点?
有时我发现一个演示文稿解释了另一种定义遍历的方法,但这不能正常运行,我从 Python 收到错误消息。我需要安装其他东西吗?
class Users(neo4j.Traversal): # Traversals ! queries in Neo4j
types = [ neo4j.INCOMING.WORKS_AS,neo4j.OUTGOING.BELONGS_TO]
order = neo4j.BREADTH_FIRST
stop = neo4j.STOP_AT_END_OF_GRAPH
returnable = neo4j.RETURN_ALL_BUT_START_NODE
如何使用 Python 为 neo4j 定义 Traverse 以:
- 排除第一个节点
- 停在某个深度
也许我应该使用subtraversals?我该如何定义它们?
更具体地说,我想在此图上定义一个遍历,以从此处的节点“I'm”到节点“-1”或仅节点“+1”。该图定义了关系的方向和它们的名称。