Во время обхода я смотрю на одно свойство. Но кажется, что все свойства загружены, что замедляет обход. Есть ли способ настроить ленивую загрузку для свойств, на которые я не хочу смотреть?

TraversalDescription td = Traversal.description().evaluator( Evaluators.atDepth(1) );
for ( Path p : td.traverse( myNode ) ) {
    String nodeName = (String) p.endNode().getProperty("name");
    // do some stuff
}

Я нашел подсказку только здесь...

Благодарность!

===

Изменить: Моя цель - отсортировать узлы по именам, например по фильмам ...

0
jimmy 9 Янв 2014 в 08:59
1
При первом обращении к свойствам загружаются только «легкие» свойства. Тяжелые свойства, такие как длинные строки или массивы, загружаются только при доступе.
 – 
Michael Hunger
10 Янв 2014 в 06:11
1
Помните, что ваши запросы обычно выполняются для горячего набора данных, который находится в кеше, поэтому дополнительной загрузки не происходит.
 – 
Michael Hunger
10 Янв 2014 в 06:12

1 ответ

Лучший ответ

При первом доступе к любому свойству узла или связи все свойства загружаются в память, см. http://docs.neo4j.org/chunked/stable/performance-guide.html#_neo4j_primitives_lifecycle .

Лучшая практика для высокопроизводительных обходов - изменить модель графа таким образом, чтобы обход не касался свойств во время обхода. В зависимости от вашего домена вы можете добраться до этого, например, используя более подробные типы отношений или используя метки в Neo4j 2.0.

В ваших фрагментах кода используются устаревшие обходы, вам следует перенести свой код на использование Traversal API, как описано в http://docs.neo4j.org/chunked/stable/tutorial-traversal-java-api.html.

2
Stefan Armbruster 9 Янв 2014 в 14:01
Спасибо за ответ. К сожалению, я не понимаю, как я могу изменить свою графическую модель. Моя цель - отсортировать узлы по имени. Например, отсортируйте названия фильмов. В этом случае названия фильмов не должны быть типами или ярлыками, я ошибаюсь?
 – 
jimmy
10 Янв 2014 в 04:37
Не знаю, какой у вас вариант использования, но если вам часто нужны фильмы, отсортированные по именам, вы можете организовать их в связанный список, используя отношения previous и / или next.
 – 
Stefan Armbruster
10 Янв 2014 в 12:04
Наконец, я перешел на 2.0, чтобы пользоваться лейблами. Он не подходит моей модели на 100%, но помогает. Спасибо!
 – 
jimmy
28 Янв 2014 в 10:32