#neo4j #cypher
#neo4j #cypher
Вопрос:
У меня есть запрос для элементов поиска, аналогичный другому, с использованием концепций тегов:
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
«похожие» — это набор узлов, которые индексируются с помощью свойства type. «To» — это узел, который я должен сравнить с «похожими» узлами.
Сам аналогичный запрос возвращает 500 узлов, а количество помеченных связей равно 3000. Число узлов тега равно 500. На моей машине этот запрос занимает 50 секунд.
Удаление предложений order by и / или count не улучшает производительность.
Комментарии:
1. Не могли бы вы случайно предоставить свою тестовую базу данных или генератор данных, я хотел бы взглянуть на нее и составить ее профиль?
Ответ №1:
Какую версию Neo4j вы используете? Как вы выполняете запрос (REST, веб-консоль, оболочка, java)? Это первый запуск в сеансе, второй или третий?
Можете ли вы попробовать переписать ваше предложение match, чтобы оно to
было первым? Это не должно иметь значения, но было бы интересно узнать.
match to-[:TAGGED]->tag<-[:TAGGED]-similar
Большое спасибо.
Комментарии:
1. Я использую Java, версия 1.5M02, и это не первый запуск в сеансе. Я попытался поменять «на» на «аналогичный» без разницы.