2014-12-20 3 views
1

Я использую Neo4jrb версии 4.0.0.rc.3 с рельсами, и у меня проблемы с вычислением кратчайшего пути между двумя узлами.Поиск кратчайшего пути с Neo4jrb

У меня есть один тип узла A и единственный тип отношений R. Я могу найти прямые отношения, используя .rels, но не знаю, как перемещаться по графику (без явного использования Cypher).

+0

Я не знаком с 'Neo4jrb', но кратчайшие пути, как правило, реконструируется следующим образом: если' k' является первым узлом, пройденный на кратчайшему пути от '' i' к j', следующий узел пройденный будет первым узлом, пройденным по кратчайшему пути от 'k' до' j'. Я считаю, что все кратчайшие алгоритмы маршрута производят кратчайшие пути от всех узлов до узла 'j', когда требуется только кратчайший путь от' i' до 'j', поэтому кратчайшие пути могут быть восстановлены таким образом. –

+0

@ CarySwoveland спасибо, но я знаком с самими альгрогитами. Я просто не знаю, как пройти через «Neo4jrb» –

ответ

2

У нас нет классов или методов в v3 или v4, которые дают вам доступ к алгоритмам, как это сделал 2.3. Вам нужно будет написать Cypher, используя функцию shortestPath.

Neo4j::Session.query.match("(martin:Person),(oliver:Person), p = shortestPath((martin)-[*..15]-(oliver))").where(martin: { name: 'Martin Sheen' }).where(oliver: { name: 'Oliver Stone' }) .return(:p) 
+0

. Как мы перебираем узлы в пути и получаем их атрибуты? Прямо сейчас я просто получаю URL-адреса каждого узла. Я хочу получить доступ к их свойствам. –

Смежные вопросы