質問

私はNeo4Jを学んでいます、そして私のおもちゃのプロジェクトはTwitterで遊ぶことです。この小さなスクリプトでは、Python TweepyとPy2neoを使ってTwitter_Userを1つ持ち、友達全員を挿入しています。

def insert_friends(twitter_user):
    for friend in Cursor(api.friends, user_id=twitter_user.id_str).items():
        n=neo4j.CypherQuery(graph_db,"""
                MATCH (user),(friend)
                WHERE user.id_str={user_id_str} AND friend.id_str={friend_id_str}
                CREATE UNIQUE (user)-[:FOLLOWS]->(friend)
        """).execute_one(user_id_str=twitter_user.id_str, friend_id_str=friend.id_str)
.

これは正常に動作しますが、私はそれが最適化されることができると思われます。つまり、WHERE句では、毎回同じユーザーを見上げています。毎回その余分な検索を回避するにはどうすればよいですか。たとえば、PRISIIがNEO4JにあるノードをPRISIで作成でき、NEO4Jの内部ノードIDを指定するだけです。

役に立ちましたか?

解決

ラベルと索引を使用する必要があります。

すなわち:

CREATE INDEX on :User(id_str);

MATCH (user:User),(friend:User) // add labels so it knows to use the index
WHERE user.id_str={user_id_str} AND friend.id_str={friend_id_str}
CREATE UNIQUE (user)-[:FOLLOWS]->(friend);
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top