Производительность Neo4j Cypher Query

У меня есть запрос для элементов поиска, похожий на другой, с использованием концепций тегов:

START similar=node:TYPE_INDEX("type1"), to=node(20325) 
match similar-[:TAGGED]->tag<-[:TAGGED]-to
return distinct similar, count(tag)
order by count(tag) DESC

«аналогичный» - это набор узлов, которые индексируются с помощью свойства типа. «Кому» - это узел, который мне нужно сравнить с «похожими» узлами.

Сам подобный запрос возвращает 500 узлов, а количество отношений TAGGED равно 3000. Узлов тегов - 500. На моей машине этот запрос занимает 50 секунд.

Удаление предложения order by и / или count не улучшает производительность.


person Simone Vellei    schedule 14.11.2011    source источник
comment
Не могли бы вы случайно предоставить свою тестовую базу данных или генератор данных, я хотел бы взглянуть на нее и профилировать?   -  person Michael Hunger    schedule 23.11.2011


Ответы (1)


Какую версию Neo4j вы используете? Как выполнить запрос (REST, веб-консоль, оболочка, java)? Это первый запуск в сеансе, второй или третий?

Можете ли вы попробовать переписать предложение о совпадении так, чтобы первым было to? Это не должно иметь значения, но было бы интересно узнать.

match to-[:TAGGED]->tag<-[:TAGGED]-similar

Большое спасибо.

person Michael Hunger    schedule 15.11.2011
comment
Я использую Java, версия 1.5M02, и это не первый запуск в сеансе. Я пробовал поменять аналогичный без разницы. - person Simone Vellei; 15.11.2011