2013-03-08 5 views
0

Я создал встроенный Neo4j в проекте Java, как это:Cypher Запрос не найдя узел

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 

Могу ли я сделать что-то очень неправильно или я просто пропустил что-то очевидное?

Спасибо.

+0

Я думаю, что вы перепутали индекс-имя, которое 'node_auto_index' индексированных имена свойств' «movieId, идентификатор пользователь, рейтинг, жанр» '. –

ответ

3

Есть ли строка? Попробуйте, как это с синтаксисом индекса Lucene:

start movie=node:node_auto_index('movieId:2') 
return movie, movie.title 
+0

Пробовал ваше предложение, но все же возвращает 0 строк с 'movieId: 2'. Значения movieId являются длинными. – C0deAttack

+0

О, я видел, что вы используете автоиндексатор ... обновил мой ответ. –

+1

Ahhh! Спасибо, у меня есть ожидаемый результат. Можете ли вы объяснить, почему «movieId: 2» работает, но movieId = «2» неверно? – C0deAttack

Смежные вопросы