問題タブ [gremlin]
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 - Neo4j グラフのカスタム Lucene インデックスを作成するには?
情報チンプからENRON データセットを操作するために、Gremlin と Neo4j を使用しています。このデータセットには、2 種類の頂点Message
とEmail Addresss
および 2 種類のエッジ と がSENT
ありRECEVIED_BY
ます。このデータセットにカスタム インデックスを作成して、Lucene
の各頂点のドキュメントを作成し、関連付けられた頂点 ( 、など) からの情報をドキュメントの追加フィールドとしてtype: 'Message'
組み込みます。v.in()
v.out()
Lucene
私は次の行に沿ってコードを考えています
私の質問は次のとおりです。
- インデックス作成のために頂点を列挙するより良い方法はありますか?
- これに自動インデックスを使用できますか? 使用できる場合、インデックスを作成する対象を指定するにはどうすればよいですか?
- 独自の を指定できますか
Analyzer
、それともデフォルトのままですか? デフォルトは何ですか? - 独自のインデックスを作成する必要がある場合、gremlin を使用する必要がありますか?それとも Java プログラムを使用した方がよいでしょうか?
neo4j - グレムリンリクエスト
選択したプロパティを持つノードの限定リストをgremlinでリクエストするにはどうすればよいですか?
何かのようなもの:
groovy - GremlinGroovyPipelineを保存し、それに.count()を呼び出すときのGremlin
これは期待どおりに機能します。
GremlinGroovyPipeline
を変数に格納すると、count()
それはもうできません。
これは私にはかなり奇妙です。変数が割り当てられると、結果は失われるようです。
BDBでTitanを使用しています。
neo4j - Neo4j インデックスとレガシー データ
クエリを実行したいレガシー データセット ( GraphML として表されるENRON データ) があります。関連する質問のコメントで、 @StefanArmbrusterは、Cypher を使用してデータベースにクエリを実行することを提案しています。私のクエリのユース ケースは単純です。メッセージ ID (メッセージ ノードのプロパティ) を指定すると、その ID を持つノードを取得し、そのメッセージの送信者ノードと受信者ノードも取得します。
Cypher でこれを行うには、まずノードのインデックスを作成する必要があるようです。データがgraphMLファイルからロードされたときにこれを自動的に行う方法はありますか? (Gremlin を使用してデータをロードし、データベースを作成しました。)
データの外部 Lucene インデックスもあります (他の目的で必要です)。2 つのインデックスを持つことは理にかなっていますか? たとえば、Neo4J ノード ID を外部インデックスにインデックス化し、それらの ID に基づいてグラフをクエリできます。私の懸念は、これらの ID の持続性です。(類推すると、Lucene ドキュメント ID は永続的なものとして扱われるべきではありません。)
だから、私はすべきですか:
Cypher を使用してメッセージ ID を照会するために、内部的に Neo4j グラフにインデックスを付けますか? (もしそうなら、それを行う最善の方法は何ですか:インデックスを構築するための適切な呪文でデータベースを再生成しますか?既存のデータベースにインデックスを構築しますか?)
Neo4j ノード ID を外部 Lucene インデックスに保存し、これらの保存された ID を介してノードを取得しますか?
アップデート
Gremlin と組み込みサーバーで自動インデックス作成を機能させようとしましたが、うまくいきませんでした。ドキュメントでは、それは言う
基礎となるデータベースは自動索引付けされます。セクション14.12「自動索引付け」を参照してください。これにより、スクリプトは索引ルックアップによってインポートされたノードを返すことができます。
しかし、新しいデータベースをロードした後にグラフを調べると、インデックスが存在しないようです。
自動インデックス作成に関する Neo4jのドキュメントには、一連の構成が必要であると書かれています。設定に加えてnode_auto_indexing = true
、構成する必要があります
実際に自動インデックスを作成するには、インデックスを作成するプロパティを設定する必要があります。これを行うには、インデックスを作成するプロパティ キーをリストします。構成ファイルで、node_keys_indexable および relationship_keys_indexable 構成キーを使用します。埋め込みモードを使用する場合は、GraphDatabaseSettings.node_keys_indexable および GraphDatabaseSettings.relationship_keys_indexable 構成キーを使用します。いずれの場合も、値は、インデックスを作成するプロパティ キーのカンマ区切りのリストにする必要があります。
では、Gremlin はGraphDatabaseSettings
パラメーターを設定することになっているのでしょうか? 次のように、Neo4jGraph コンストラクターにマップを渡そうとしました。
しかし、インデックスの作成には明らかな影響はありませんでした。
更新 2
Gremlin を使用してデータベースを構成するのではなく、Neo4j のドキュメントに記載されている例を使用して、データベースの作成が次のようになるようにしました (Groovy で)。
私の検索は次のように行われました:
そして、これはうまくいくように見えました。ただし、オブジェクトのgetIndices()
呼び出しNeo4jGraph
は空のリストを返したことに注意してください。結果として、Neo4j API を正しく実行できますが、Gremlin ラッパーはインデックス作成状態を反映できないようです。式g.idx('node_auto_index')
( Gremlin Methodsに記載) は null を返します。
neo4j - No such property error: T for class: groovysh_evaluate in gremlin neo4j dbpeida が表示されるのはなぜですか?
http://markorodriguez.com/No such property: T for class: groovysh_evaluate
をフォローしているときに取得できますか :
configuration - Neo4j 用の新しい Gremlin バージョンをセットアップするにはどうすればよいですか?
私は使っているNeo4j - Graph Database Kernel 1.8
このグレムリン バージョンを使用します。
これは非常に古いバージョンです。
でこのコマンドを実行できないため、github プロジェクトgremlin
2.0
との間でアップグレード2.1
したい:gremlin 1.5
私の質問は、私が何をすべきかということですneo4j
.
graph - 球根/グレムリン/タイタンのキーインデックス
Neo4JアプリケーションをTitanに移植しようとしていますが、インデックスに関連する問題がいくつかあります。Titanは頂点インデックスまたはエッジインデックスをサポートしておらず、「キー」インデックスのみをサポートしていることを理解しています。
たとえば、Bulbsモデルも使用しています。
Person(facebook_id = '111')を追加すると、次を使用して取得できるはずです。
それは機能せず、使用する前にキーインデックスを作成する必要があることを教えてくれます。そこで、キースペースを削除して、rexsterdoghouseに手動でインデックスを作成しました。
その後、BulbsでPerson(facebook_id = '111')を作成し、rexsterdoghouseで取得しようとしました。
そして、空の応答を得ました。Titan頂点IDを使用してフェッチする場合は機能しますが、「facebook_id」が空になり、「。map()」が機能しません。
PS
- これは、キースペースを削除した後に作成した最初の頂点です。
- キーインデックスを自動的に作成することは可能ですか?
任意のヒント?
ありがとう!
レナート・ペディゴーニ
neo4j - graphML形式でインデックスを定義する方法は?
データをgraphML形式にエクスポートし、gremlinのgraphML.import()関数を介してneo4jにインポートしたいと考えています。インポートしたすべてのデータにインデックスを付けるためにインデックスを作成する必要があります。それはgraphML形式でも可能ですか?
私のエクスポートxmlは次のようになります:
java - タイムゾーンを変換せずに日付を解析する
私はgroovy(正確にはグラフデータベースをトラバースするgremlin)で作業しています。残念ながら、gremlin を使用しているため、新しいクラスをインポートできません。
Unix タイムスタンプに変換したい日付値がいくつかあります。これらは、次の形式で UTC として保存されます。2012-11-13 14:00:00:000
このスニペットを使用して解析しています(groovyで):
問題は、タイムゾーンの変換を行うことです。その結果、次のようになります。
そして、それを を使用してタイムスタンプに変換するとtime()
、UTC に変換され、タイムスタンプが生成されます。
日付が最初に解析されるときにタイムゾーン変換を行わないようにするにはどうすればよいnew Date()
ですか (そして、日付を UTC と見なすだけです)。
java - グレムリンでforループを書く方法は?
for
グレムリンでループを書くにはどうすればよいですか?何かのようなもの:
また、ノードを反復処理し、各ノードで関数を呼び出そうとしましたeg(count
):
私の主な目的は、forループを実行し、がないノードの値を出力することinE
です。つまり、それらの次数はゼロです。