2012-01-21 2 views
1

私が使用してグラフを開封しております。その後、DBが空ではないのに、Gremlin idxがnullで返すのはなぜですか?

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

使用して頂点を追加:

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

私はDBはその後(Gephiを使用して)単一の頂点を持って見ることができます が、私は実行します。

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

常にfalseを返します。 何らかの理由でインデックスを有効にする必要がありますか? Gremlinは特定のNeo4jバージョンが必要ですか?グレムリン1.3試着

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

この - 同じ結果を:

一部のログ情報を追加します。だから私はそれが私が行方不明であると思う。

答えて

2

GreminでNeo4jのインデックスを作成することが壊れている可能性があります。証拠には、neo4jblueprints、およびthe REST pluginに対して発生した問題が含まれています。そうでない場合でも、Gremlinは実際にNeo4jのインデックスへのファーストクラスのアクセス権を持っていません。たとえば、前回フルテキストインデックスを作成することはできません。ネオで関係インデックスを作成できるかどうかはわかりません。私はグレムリン/ Groovyのを使用

は、私は、これはグレムリンある素敵な抽象化層を壊す実現

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

found in the Neo4j docsスニペットが、その後、あなたはg.idx('vertices')のようなグレムリンの方法を使用して、一日について行くことができます。

EDIT:

率変化がグレムリンに「可視」である前に、インデックスを取得するには、この試してみてください。

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

を、この主旨の上に私がコメントでリンクされた利点があることですindはグレムリンの指数で、通常のグレムリン治療の半分を適用することができます。 OTOH、コメントの要点は、生のインデックスへの完全なアクセス権を持っています。

+0

は、それがステップ遠く私を得た、あなたの答えをいただき、ありがとうございます。インデックスは作成されましたが、スクリプトの2回目の実行からのみ有効です。あたかもコミットされていないかのように(tx.success/finishを使って試してみる)。どのようにこれを克服するための任意のアイデア? – user971956

+0

これはGremlin/Neo4jインデックスの問題の一部です - 少なくともこれらの問題で参照されています。グレムリンは、g.idx()が呼び出されるたびにそれらを検索するのではなく、すべての名前/インデックスをハッシュマップにバインドするようです。 1つの解決策は、この要点のように生のNeo4jインデックスをそのまま使用することです。https://gist.github.com/1558540 –

+0

電球!潜在的な修正について私の編集をチェックしてください。 –

0

のNeo4jのWebコンソールでグレムリンを使用しての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] 

注:ほとんどの人がここに期待するもの、それは自動的によって更新されるのNeo4jマニュアルインデックスを作成しますg.createAutomaticIndex()はしないだろうすべてのNODES(すなわち、Vertexクラス)をnameプロパティでインデックスする青写真。

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

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

関連する問題