2015-06-01 63 views
0

我想保留所有浏览历史,如何在节点之间创建多个加权边缘

要计算浏览页面之间的行为。

所以我设计了以下图表显示我的想法,

正如你所看到的,有4边之间网页A网页B

所以我怎么可能创建那种关系和节点?

我怎么能得到

  • 平均浏览时间(20分钟
  • 分钟浏览时间
  • 最大浏览时间

任何建议和想法?

感谢

+0

你的设计代替avg可以与返工做。我会说最好的方法是在页面节点之间有一个“浏览”节点,这是您存储时间的地方。像你这样设计它会大大限制你可以在你的图上执行的查询类型 – joe

+0

你的意思是每个浏览请求应该有一个新的节点?节点如何用持续时间从pageA到pageB表示。我是新手neo4j,只是couln't不理解它。 – newBike

+0

“浏览”节点将具有包含时间的属性“持续时间”。在Cypher中,您可以使用create(p1:Page {Name:“Page1”}) - [:from] - >(b:Browse {Duration:10}) - [:to] - >(p2:Page {Name: Page2“})return p1,p2 – joe

回答

1

我有点困惑。这种关系意味着什么?它是否代表用户浏览到页面B之前花费在页面A上的时间量?

刚从你的模型和你的目标,也许这样的事情会工作?

MATCH (a:Page)-[r:browsed_to]->(b:Page) 
RETURN avg(r.time_spent) 

最低和最高时,你可以用minmax

+0

是的,这是你的意思,所以我怎么能创建页面之间的关系?只需为每个浏览操作创建关系边缘? – newBike

+0

是的,你当然可以用'MATCH ... CREATE start - [:browsed_to {time_spent:{time_spent_param}}] - > end'来做到这一点。我不确定你的用例,但是可能有用的是让节点成为访问。所以你可以有'(:Visit) - [:NEXT_VISIT] - >(:Visit)'和'(:Visit) - [:AT_URL] - >(:URL)'其中'Visit'节点将有'time_spent'和'URL'节点会有一个像'address'属性那样的唯一约束 –

相关问题