1

私は以下を使用してグラフを開いています:

g = new Neo4jGraph('...path...');

次に、次を使用して頂点を追加します。

myVertex = g.addVertex(['type':'X', 'Y':Z]);

その後、db に (Gephi を使用して) 単一の頂点があることがわかりますが、実行すると:

if (g.idx(T.v) != null )

常に false を返します。何らかの方法でインデックス作成を有効にする必要がありますか? Gremlin には特定の Neo4j バージョンが必要ですか?

ログ情報の追加:

...
==>v[22092]
==>v[22093]
==>v[22094]
==>v[22095]
gremlin> g.idx(T.v)
==>null
gremlin> g.idx("vertices")
==>null
gremlin> g.indices
gremlin>

これをGremlin 1.3で試してみました-同じ結果です。だから私はそれが私が欠けているものだと思います。

4

2 に答える 2

2

グレムリンを使用してNeo4jでインデックスを作成すると壊れている可能性があると思います。証拠には、 neo4jブループリントRESTプラグインに対して提起された問題が含まれています。そうでない場合でも、GremlinはNeo4jのインデックスにファーストクラスでアクセスできません。たとえば、前回チェックしたときにフルテキストインデックスを作成することはできません。Neoでリレーションシップインデックスを作成できるかどうかはわかりません。

Neo4jドキュメントにあるGremlin/Groovyスニペットを使用します

neo4j = g.getRawGraph()
idxManager = neo4j.index()
personIndex = idxManager.forNodes('vertices')

これにより、Gremlinである優れた抽象化レイヤーが壊れることに気付きましたが、その後、のようなGremlinメソッドを使用して1日を過ごすことができますg.idx('vertices')

編集:

インデックスの変更がGremlinに「表示」される前にインデックスにアクセスするには、次のことを試してください。

import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jIndex;
ind = new Neo4jIndex('vertices', Vertex.class, g)

コメントでリンクした要点に対してこれが持つ利点indは、グレムリンインデックスであり、通常のグレムリン処理の半分を適用できることです。OTOH、コメントの要点は生のインデックスへの完全なアクセス権を持っています。

于 2012-01-22T20:47:23.823 に答える
0

Neo4j Web コンソールで Gremlin を使用して Neo4j インデックスを作成する方法:

gremlin> g.createManualIndex('test2', Vertex.class)
==> MANUAL[test2:Vertex]
gremlin> test2=g.idx('test2')
==> MANUAL[test2:Vertex]
gremlin> hendy=g.v(1673)
==> v[1673]
gremlin> hendy.name
==> Hendy Irawan
gremlin> test2.put('name', 'Hendy Irawan', hendy)
==>
gremlin> test2.get('name', 'Hendy Irawan')
==> v[1673]

注:g.createAutomaticIndex()ほとんどの人がここで期待することは実行しません。ブループリントによって自動的に更新される Neo4j 手動インデックスを作成し、すべてのノード (つまりVertex、クラス) をnameプロパティでインデックス化します。

から取得: https://github.com/neo4j/community/issues/397#issuecomment-5024341

参考:https ://github.com/tinkerpop/blueprints/wiki/Graph-Indices

于 2012-04-09T12:27:32.563 に答える