0

次のような Java プロジェクトに組み込みの Neo4J を作成しました。

graphDb = new GraphDatabaseFactory()
            .newEmbeddedDatabaseBuilder("db")
            .setConfig(GraphDatabaseSettings.node_keys_indexable, "movieId, userId, rating, genre")
            .setConfig(GraphDatabaseSettings.node_auto_indexing, "true")
            .newGraphDatabase();

インデックスが作成されたことを確認しましたが、期待どおりの名前が付けられています。

Index<Node> index = graphDb.index().forNodes("movieId");
System.out.println("::: Verify Index Name :::");
System.out.println(index.getName());

コンソールには次が表示されます。

::: Verify Index Name :::
movieId

Java API を使用してノードを見つけることができます

ReadableIndex<Node> graphDbIndex = graphDb.index().getNodeAutoIndexer().getAutoIndex();
Node movie = graphDbIndex.get("movieId", 2).getSingle();
System.out.println("::: Get with Java API Result :::");
System.out.println("MovieId: " + movie.getProperty("movieId"));
System.out.println("Title: " + movie.getProperty("title"))

コンソールが表示されます

::: Get with Java API Result :::
MovieId: 2
Title: Jumanji (1995)

しかし、Cypherで試してみると、これが結果です

ExecutionEngine engine = new ExecutionEngine(graphDb);
ExecutionResult result = engine.execute("start movie=node:movieId(movieId='2') return movie, movie.title");
System.out.println("::: get with Cypher Result :::");
System.out.println(result);

コンソールが表示されます

::: get with Cypher Result :::
+---------------------+
| movie | movie.title |
+---------------------+
+---------------------+
0 row
8 ms

私は何か非常に間違ったことをしているのですか、それとも明らかな何かを見逃しただけですか?

ありがとう。

4

1 に答える 1

3

IDは文字列ですか?lucene インデックス構文で次のように試してください。

start movie=node:node_auto_index('movieId:2') 
return movie, movie.title
于 2013-03-08T00:52:17.007 に答える