Как я могу получить второй короткий путь?

#neo4j

#neo4j

Вопрос:

Я создал большую базу данных graph. График включает отношения между организациями. Я хотел бы получить короткий путь между двумя узлами. Я отфильтровал типы связей по следующему запросу

 MATCH (o:Organization) WHERE Id(o) =  23806112
MATCH (o1:Organization) WHERE Id(o1) = 24385058
MATCH p = allShortestPaths((o)-[*1..10]-(o1)) WHERE 
ALL (r IN RELATIONSHIPS(p) WHERE 
(type(r) = 'OrganizationFounderOrganization' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationFounderPerson' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationChief' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationManagingCompany' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationPhone') 
 OR (type(r) = 'OrganizationAddress' AND NOT EXISTS(r.DateTo) ) 
)
RETURN p SKIP 0 LIMIT 30
  

Фильтры по связям не могут быть объединены, потому что они могли бы использовать другие фильтры.
Мой план выполнения по этому запросу

http://joxi.ru/E2pNPDDH9Rpger

План выполнения 1

Когда я получаю пути, я фильтрую узлы по другим условиям (капитал, статус), и если я получаю неправильные пути, я применяю следующий запрос с фильтром по плохим узлам.

 MATCH (o:Organization) WHERE Id(o) =  23806112
MATCH (o1:Organization) WHERE Id(o1) = 24385058
MATCH p = allShortestPaths((o)-[*1..10]-(o1)) WHERE 
ALL (r IN RELATIONSHIPS(p) WHERE 
(type(r) = 'OrganizationFounderOrganization' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationFounderPerson' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationChief' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationManagingCompany' AND r.DateFrom <= datetime('2019-03-13') ) 
 OR (type(r) = 'OrganizationPhone') 
 OR (type(r) = 'OrganizationAddress' AND NOT EXISTS(r.DateTo) ) 
)
AND ALL (n IN NODES(p) WHERE NOT Id(n) IN [15665,1557884,7888953]
RETURN p SKIP 0 LIMIT 30
  

Второй запрос плана выполнения

http://joxi.ru/KAxWPDDcMJGyY2

План выполнения 2

В процессе выполнения второго запроса neo4j перестает отвечать, и я должен перезапустить контейнер

Версия Neo4j 3.4.7

Размеры хранилища

Количество сохраненных данных 5,69 Кб

Хранилище ярлыков 16,02 Кб

Хранилище индексов 9,27 Гигабайт

Хранилище схемы 8,01 Кб

Хранилище массива 8,01 Кб

Логический журнал размером 16,53 МБ

Хранилище узлов 1.18 Гигабайт

Хранилище свойств 20,33 гигабайт

Хранилище отношений 8,79 гигабайт

Хранилище строк 18,73 гигабайта

Общий размер хранилища 58,56 гигабайт

Выделение идентификатора

Идентификатор узла 84686407

Идентификатор свойства 532508736

Идентификатор отношения 276570526

Идентификатор типа связи 13

Ограничение памяти контейнера 122880 мб

Процессор 32-ядерный