Использование шифра для поиска узлов в подграфе, которые НЕ связаны с указанным узлом

Я изучаю шифр с Neo4j, но у меня есть некоторые проблемы, которые показывают, что я все еще не совсем понимаю.

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

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

Я думал, что могу сделать что-то вроде:

match (u:User{id:"some id"}), (:Category{title:"some category"})-[:categorizes]->(i:Item) 
where not (u)-[:knows_about]-(i) 
return  i

но это не работает

Может кто-нибудь объяснить, что я делаю неправильно / что я должен делать?

1 ответ

Решение

Я думаю, что вы хотите следующее:

MATCH (:Category{title:"some category"})-[:categorizes]->(i:Item)
MATCH (u:User {id:some_id})
WHERE  not (u)-[:knows_about]-(i) 
RETURN i

Возможно, вы захотите добавить направление во втором предложении WHERE (производительность!).

Другие вопросы по тегам