Я новичок в Neo4j. У меня есть простой граф, и я хочу, чтобы все узлы, которые почти почти (расстояние менее 5, например), были связаны с одним узлом. Также мне нужен путь от источника к ним. Это может быть сделано только одним источником bfs из источника. Со следующим шифровальщика запроса:Найти дерево bfs в Neo4j
Match c=(sourceNode:Person {name:'Demi Moore'})-[relation*1..5]-(destNode)
return c
limit 10
Запрос возвращает все пути с длиной < = 5 от источника, но destNode не будет отличаться. поэтому результат может иметь несколько путей к одному и тому же узлу dest.
С помощью следующего запроса:
Match c=(sourceNode:Person {name:'Demi Moore'})-[relation*1..5]-(destNode)
return distinct destnode
limit 10
Запрос возвращает только destNodes не путь. Если я изменю предложение return на return distinct destnode, c
, запрос также вернет строку на каждый найденный путь! Я знаю, что могу получить кратчайший путь от источника до каждого отдельного destnode. Если найду, но у него есть проблема с производительностью. Результат может быть найден одним bfs, и я думаю, что у любой базы данных графика есть инструмент по умолчанию, я не прав?
Не вызывает ли этот запрос поиск всех путей к каждому узлу? –
Не все, но только один из самых коротких для каждого узла в течение пяти шагов. Разве это не то, что вы хотите? –
Это то, что я хочу, но я думаю, что Neo4j должен найти все исправления от источника до одного узла, а затем упорядочить их по lengh. не так ли ?! –