Свойства на основе узла на отношении - PullRequest
0 голосов
/ 07 января 2019

Я начинаю с Neo4J, чтобы создать график пользователей и их отношений. На данный момент между пользователями существует единая связь «ЗНАЕТ», т.е.

enter image description here

Что я хочу сейчас сделать, так это указать свойства отношений специально для каждого из пользователей. Например, «интерес», который указывает, насколько пользователь заинтересован в другом пользователе. Могу ли я указать это для каждого пользователя в одной взаимосвязи KNOWS или мне нужно создать две взаимосвязи между пользователями и установить атрибут для каждой из взаимосвязей?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 января 2019

Могу ли я указать это (свойство: интерес) для каждого пользователя в одном отношении KNOWS или мне нужно создать два отношения между пользователями и установить атрибут для каждого из отношений?

Вам понадобятся два отношения.

Вы можете сделать это с одним, но тогда вам нужно сохранить два свойства во взаимосвязи и информацию о том, какое свойство идет с каким узлом. Гораздо проще с двумя отношениями.

Из комментария:

Могу ли я сохранить их как двунаправленные или мне нужно использовать направленное в этом случае?

Отношения всегда направлены. Только когда вы запрашиваете, появляется понятие двунаправленного, но оно не является действительно двунаправленным, оно не имеет направления, например, (a)-[r]-(b). Таким образом, вы бы использовали (a)-[r]->(b) и (b)-[r]->(a) или (a)<-[r]-(b). Если вы запрашиваете направление, то знаете, как применить свойство отношений.

Обычно я выполняю большую часть своей работы с Java как встроенное приложение вместо Cypher, и оно платит за использование направленных запросов, так как делает меньше кода для выполнения ассоциаций.


Примечание

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

...