Получить подграф в Neo4j, используя верхние N ребер на основе свойства ребер - PullRequest
2 голосов
/ 08 марта 2020

У меня есть график Position узлов, которые связаны, используя направление :TO ребер. Каждый узел имеет свойство uuid и может иметь множество ребер от него до других узлов, а каждое ребро имеет свойство probability. Я хочу получить подграф от конкретного начального узла, используя только ребра с N верхними вероятностями от каждого узла . Например, если у каждого узла есть десять ребер, я мог бы использовать три ребра с наибольшей вероятностью.

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

Процедуры расширения пути apoc, вероятно, будут работать нормально, за исключением последнего требования; нет очевидного способа ограничить количество ребер, только количество строк.

Я пытался объединить MATCH запросов вместе, но не могу понять, как ограничить количество ребер на узел основа, просто количество строк.

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

1 Ответ

0 голосов
/ 19 марта 2020

Попробуйте это:

MATCH (n:label1)-[e:type]->(m:label2) 
WHERE n.name='xxx' 
WITH n,e1,m 
ORDER BY e1.prop DESC 
LIMIT 3 
MATCH (m)-[e2:type]->(k) 
RETURN n,e1,m,e2,k
...