Моя цель запроса - вернуть отношения между двумя из нескольких узлов или выбранными частями графа как подграф.Я получаю сообщение об ошибке при выполнении запроса ниже:
with ['社会主义现代化建设', '中国共产党中央委员会', '香港', '依法治国', '澳门', '台湾同胞', '改革开放', '春节(中国传统节日)', '习近平', '中华人民共和国中央军事委员会', '全面深化改革', '中华人民共和国主席', '人民大会堂(1960年营口卷烟厂注册卷烟品牌)', '中国共产党中央委员会总书记', '团拜会'] as value_list
match (n:Node)
where n.value in value_list
with collect(n) as result
unwind result as source
unwind result as target
match paths = shortestPath((source)-[*1..3]-(target))
with paths limit 20000
return paths
И я получаю это сообщение:
Neo.DatabaseError.Statement.ExecutionFailed Neo.DatabaseError.Statement.ExecutionFailed: алгоритм кратчайшего пути не работает, когда начальный и конечный узлы совпадают.Это может произойти, если вы выполните поиск shorttestPath после декартового произведения, которое может иметь одинаковые начальный и конечный узлы для некоторых строк, переданных в shorttestPath.
Если вы не хотите испытывать это исключение и можете допустить возможность пропуска результатов для этих строк, отключите это в конфигурации Neo4j, установив для cypher.forbid_shortestpath_common_nodes
значение false.Если вы не можете принять пропущенные результаты и действительно хотите иметь самый короткий путь между двумя общими узлами, перезапишите запрос, используя стандартное выражение шаблона переменной длины Cypher с последующим упорядочением по длине пути и ограничением одним результатом.
У меня нет этой строки в моем конфигурационном файле neo4j:
cypher.forbid_shortestpath_common_node=false
Предложения о том, как обойти это, будут приняты.