Без образца графика его трудно сказать, почему вы получите что-то назад, когда вы ожидали чего-то еще. Вы можете поделиться образцовым графом, включив оператор create, который будет генерировать упомянутый граф, или создав его в консоли Neo4j и разместив ссылку в своем вопросе. Вот пример последнего: console.neo4j.org/r/fnnz6b
А пока вы, вероятно, захотите объявить тип отношений в своем шаблоне. Если :User
имеет более чем один тип исходящих отношений, вы будете исключать эти другие пути, основанные на ярлыках узлов на другом конце, что намного менее эффективно, чем для того, чтобы начать только правильные отношения.
На мой взгляд, неясно, означает ли, что (u:User)-->(o:Order)-->(b:Book)
означает, что у пользователя один или несколько заказов, и каждый заказ состоит из одной или нескольких книг; или если это означает только то, что пользователь заказал книгу. Если вы можете поделиться образцом, надеюсь, это тоже будет ясно.
Edit:
Великий, так что, глядя на график: Вы получаете B и D назад, потому что другие, которые купили B также купили D, и другие, которые купили D также купили B, который является вашим критерием рекомендации. Вы можете добавить фильтр в операторе WHERE
исключить те книги, которые пользователь уже купил, что-то вроде
WHERE NOT (u1)-[:BUY]->()-[:CONTAINS]->(b2)
Это даст вам A, C, C обратно, так как есть две соответствующие пути к C. Это вероятно, не имеет значения, чтобы получить два результата элементы для C, так что вы можете либо ограничить возврат дать только отдельных значений
RETURN DISTINCT(b2)
или группы возвращаемых значений путем подсчета путей, соответствующих каждому результату, как «рекомендация счет»
RETURN b2, COUNT(b2) as score
Кроме того, если каждый заказ только [CONTAINS]
одна книга, вы можете попробовать моделирование без заказа, просто (:User)-[:BOUGHT]->(:Book)
.
Вы можете поделиться образцовым графом, включив оператор create, который будет генерировать упомянутый граф, или создав его в консоли Neo4j и разместив ссылку в своем вопросе. Вот пример последнего: http://console.neo4j.org/r/fnnz6b – jjaderberg
Благодарим вас за ответ. Я не знал этого удобного сайта. Я постараюсь поделиться некоторым графиком в ближайшее время. – Michael
Мой график - это ссылка. http: //console.neo4j.org /? id = e242cm Пользователь может купить книгу за один раз. это означает, что заказ может содержать только одну книгу. – Michael