0

ここのドキュメントと投稿から、neo4j でノード プロパティの自動インデックス作成を有効にした後、ノードごとにプロパティを再度設定して、プロパティをインデックスに追加する必要があることを理解しています。

Neo4j バージョン 1.9.M05

DrWho データベースを使用して、このグルーヴィーなコードは、プロパティを設定することにより、自動インデックス文字プロパティにドクター文字を追加することを目的としています。このコードは機能しません。これを実行した後、自動ノード インデックスは空です

私が間違っていることがわかりますか?

import org.neo4j.graphdb.*
import org.neo4j.graphdb.factory.*
import org.neo4j.graphdb.index.*

db_path = '/Users/mike/Documents/code/neo4j/dbs/drwho.db'

// use Builder to initialize settings for embedded db
// include autoindexing
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder( db_path ).
  setConfig(GraphDatabaseSettings.node_auto_indexing, "true" ).
  setConfig(GraphDatabaseSettings.node_keys_indexable, "character" ).
  newGraphDatabase()

DoctorKey="character"
DoctorValue="Doctor"
Node Doctor = graphDb.getNodeById( 1 )
assert Doctor.hasProperty( DoctorKey )
assert Doctor.getProperty( DoctorKey ).equals( DoctorValue )

// drop and add character property to add it to auto_index
Transaction tx = graphDb.beginTx()
try
{
  Doctor.removeProperty( DoctorKey )
  Doctor.setProperty( DoctoryKey, DoctorValue )
  tx.success()
} catch ( Exception e ) { tx.failure()
} finally               { tx.finish() }

assert Doctor.hasProperty( DoctorKey )
assert Doctor.getProperty( DoctorKey ).equals( DoctorValue )

// query index
ReadableIndex<Node> autoNodeIndex = graphDb.index().
  getNodeAutoIndexer().
  getAutoIndex()

// DoctorAgain is NULL
Node DoctorAgain =  autoNodeIndex.get( DoctorKey , DoctorValue ).getSingle()
assert DoctorAgain == Doctor


addShutdownHook {
  graphDb.shutdown()
}
4

1 に答える 1

4

これは Neo4j 関連の問題ではなく、コードにタイプミスがあるだけです。交換すれば

Doctor.setProperty( DoctoryKey, DoctorValue )

Doctor.setProperty( DoctorKey, DoctorValue )

できます。

于 2013-03-29T18:20:57.410 に答える