問題タブ [py2neo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - Py2neo cypher query return インスタンスメソッド
py2neo チュートリアル ( http://book.py2neo.org/en/latest/cypher/ ) の使用:
これを複製しようとすると、次のようになります。
抽象的な情報ではなく、実際のデータを返すにはどうすればよいですか?
python - py2neo: バッチ挿入に依存
py2neo (v 1.9.2) を使用してデータを neo4j データベースに書き込みます。
current_relationship_index.get(..) と current_relationship_index.create(...) をバッチ コマンドで置き換える方法はありますか? あることは知っていますが、問題は、これらのコマンドの戻り値に応じて行動する必要があることです。そして、パフォーマンスのためにすべてのステートメントをバッチに入れたいと思います。
リレーションシップにインデックスを付けるのはかなり珍しいことだと読みましたが、そうする理由は次のとおりです: 毎日いくつかの (テキスト) ファイルを解析する必要があり、リレーションシップのいずれかが前日に変更されたかどうかを確認する必要があります。リレーションがテキスト ファイルに存在しなくなったので、neo4j で「置換」プロパティでマークしたいと考えています。したがって、すべての「影響を受けた」関係を適切なインデックスに追加するので、これらが変更されていないことがわかります。touched_relationship_index に含まれていないすべての関係は、明らかにもう存在しないため、マークを付けることができます。
py2neo が提供していると確信していますが、これより簡単な方法は考えられません。
編集:ナイジェルのコメントを考慮して、私はこれを試しました:
バッチで「my_rel」を参照できないため、これは明らかに機能しません。どうすればこれを解決できますか? 前のバッチステートメントの結果を「0」で参照しますか? ただし、すべてがループで実行されることになっているため、数値は固定されていないことを考慮してください。おそらく、現在のバッチステートメントを参照し、ステートメントがバッチに追加されるたびに常に増加する変数「batch_counter」を使用しますか??
python - py2neoを使用してcsvファイルからneo4jグラフデータベースを作成する
私は現在博士課程で働いており、Py2neo に興味があるので、ソーシャル グラフを使用したいくつかの実験を実行するために Py2neo を使用しています。しかし、私は初心者のトラブルに巻き込まれました。これらの簡単な質問をしてすみません。
ジャーナルの出版物に関するデータを含む xml データセットを取得しました。それを csv テーブルに変換しました。約 700 のレコードがあり、各レコードは日付、タイトル、キーワード、作成者の 4 つのフィールドで構成されています。したがって、私の最初の質問は、このテーブルからプログラムでグラフを作成する方法です。csvテーブルをループし、各行と列のフィールドを読み取り、ノードに書き込むpythonスクリプトを作成することを検討しました。+++++++++++++++++++++++++++++++++++++++++++++ コード ++++ +++++++++++++++++++++++++++++++++++++++++
================ この出力 (フラグメント) を得ました: Python 2.7.5 (デフォルト、2013 年 8 月 22 日、09:31:58) [GCC 4.8.1 20130603 (Red Hat 4.8.1-1)] aires2、標準
========= 何が悪いの?
python - py2neo: 各種コマンドの性能と戻り値
py2neo (1.5.1) と neo4j (1.9.2) を使用して、さまざまなコマンドのパフォーマンスについて疑問に思っています (グラフには約 80k の関係があります)。
最初にすべての関係 (~80k) を取得しますが、これには明らかに時間がかかります。
しかし、リレーションをループして出力する (または何らかの変数に保存する) のに、なぜ驚くほどの時間 (約 1 ~ 2 分) がかかるのでしょうか? rels
は関係のリストですが、各関係には何が含まれているのでしょうか?
行を削除するprint relation.get_properties()
と、ループの実行時間が大幅に短縮されます (~10 秒)。それで、それぞれrelation.get_properties()
がデータベースに対してクエリを実行すると思いますか?合理的に聞こえます。
print relation
ただし、私にとっては奇妙なことです。必要な情報がすべて含まれているにもかかわらず、次のコードがはるかに高速なのはなぜですか?
そのため、必要なすべての情報が実際に出力され、その実行がはるかに高速になりますが、関係のプロパティを抽出して変数に格納することはできません。
では、リレーションシップにはどのような情報が保存されるのでしょうか? を使用せずにすべてのプロパティを抽出するにはどうすればよいですかget_properties()
。これはキャッシュと関係がありますか?わかりません、これは私を狂わせています...私はすでにあなたの答えを楽しみにしています、ナイジェル;-)
注: バッチを使用して最適化できることはわかっていますが、それは今のところ問題ではありません。
編集:print relation["since"]
反復ごとにクエリも発生しますか?
EDIT2:パフォーマンスについて話しているときに、もう 1 つ: 次の暗号クエリを比較すると、最初のクエリが 2 番目のクエリよりも遅いことがわかりました。なぜですか? (コールドグラフ上で実行されるため、キャッシュの影響はありません)
query1: START n=ノード(*) RETURN n
query2: START n=node(*) RETURN n.name, n.age
python - py2neo を使用してテキスト データを Neo4j に挿入する
テキストファイルからpy2neoを使用してデータを挿入したい.しかし、ノードを作成する前にそれがすでに存在することを確認する方法です
.たとえばNeo4j
、py2neoの方法はありますかCREATE UNIQUE
ノード A から B を作成 ノード A から C を作成
次に、ノード A を 1 つだけ作成し、B と C に接続する必要があります。
insert_data.py
data.txt:
python - Cypher を使用して py2neo を高速化する
Ubuntu Linux の Python 3.2 で py2neo を使用して、SQLite3 データベースから neo4j にグラフを作成しています。速度はそれほど重要ではありませんが、グラフは合計 500 万行のうち、約 3 時間で 40,000 行 (SQL 行ごとに 1 つのリレーション) しか取得していません。
メインループは次のとおりです。
データベースは問題なく作成されますが、完了するまでに数週間かかります。これをより速く行うことは可能だと思います。