Использование шифра для поиска узлов в подграфе, которые НЕ связаны с указанным узлом
Я изучаю шифр с 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 (производительность!).