Я использую Neo4j 2.1.7 и Node.js для создания REST API. Данные - около 70 000 узлов и 100 000 отношений - содержат очень много небольших подключенных подграфов.Найти узлы и их связанные подграфы с Neo4j + Cypher
Один вызов API, например localhost:8000/search?name=Bussum
, должен возвращать все узлы с именем Bussum
и связанный компонент, к которому они принадлежат.
Иллюстрация:
(Изображение из Wikipedia)
я могу получить все данные мне нужно с помощью запроса, как это:
MATCH (a {name: "Bussum" })-[r*]-(b)
UNWIND rels AS rel
RETURN distinct startNode(rel) AS a, type(rel), endNode(rel) AS b
Но такой будет запрос просто верните все троек (a)-[r]-(b)
(не сгруппированы по компонентам/подграф). Конечно, я мог бы восстановить граф в Node.js и сам найти подграфы, но это совсем не похоже на лучшее решение. Можно ли группировать возвращаемые данные в массиве/коллекции подграфов/компонентов? Какие запросы Cypher будут лучше соответствовать моему варианту использования? Или я должен вместо этого использовать API-интерфейс Neo4j Java?
Спасибо! Bert
как «маленькие» являются подграфами? Разве те, что изображены на иллюстрации, являются наименьшими по величине? –
Некоторые содержат одну вершину, около 100, но большинство между 5 и 10. – Bert
У узлов в каждом конкретном подграфе есть уникальный идентификатор этого подграфа? –