neo4jrestclientは、インデックス作成とグラフをトラバースの両方をサポートしていますが、私はあなたのユースケースのためにenoguh可能性だけでインデックスを使用してだと思います。しかし、私はあなたの問題を適切に理解しているかどうかはわかりません。とにかく、このような何かは仕事ができる:
>>> from neo4jrestclient.client import GraphDatabase
>>> gdb = GraphDatabase("http://localhost:7474/db/data/")
>>> idx = gdb.nodes.indexes.create("urltags")
>>> url_node = gdb.nodes.create(url="http://foo.bar", type="URL")
>>> tag_node = gdb.nodes.create(tag="foobar", type="TAG")
我々は、タグfoobar
でタグ付けされたURL "http://foo.bar"
の数を追跡保つために関係するプロパティcount
を追加します。
>>> url_node.relationships.create(tag_node["tag"], tag_node, count=1)
その後、URLの値に基づいてurlノードをインデックス付けします。私は、タグのノードでタグ付けされた新しいURLノードを作成する必要がある場合に
>>> idx["url"][url_node["url"]] = url_node
その後、我々は最初にそれがまだインデックスされるかどうかをチェックするためにインデックスを照会します。それ以外の場合は、ノードを作成して索引付けします。
>>> new_url = "http://foo.bar2"
>>> nodes = idx["url"][new_url]
>>> if len(nodes):
... rel = nodes[0].relationships.all(types=[tag_node["tag"]])[0]
... rel["count"] += 1
... else:
... new_url_node = gdb.nodes.create(url=new_url, type="URL")
... new_url_node.relationships.create(tag_node["tag"], tag_node, count=1)
... idx["url"][new_url_node["url"]] = new_url_node
ご協力ありがとうございます。 – jvc
歓迎:-D –