我即将在我的社交项目中实施 新闻Feed 机制,我的主要数据库是 Neo4j 。
我在Neo文档http://docs.neo4j.org/chunked/stable/cypher-cookbook-newsfeed.html中阅读了鼓舞人心的例子
我试图根据我的需要调整这个模型。
在我的项目中:
个人资料可以 关注 关系做多种类型的节点,为了使其简单,个人资料可以 关注 其他个人资料节点和故事节点。
让我们说... profile1- [FOLLOW] - > profile2,profile1- [FOLLOW] -story1 。
操作:profile2更新story1。
以上操作将创建两个新状态。
一个用于profile2 - “profile 2更新了故事......”
一个故事1 - “故事1已更新......”
现在,profile1想要获取他的新闻提要,但他不想在同一个动作上获得多个提要,我想只检索一个动作的一个提要/状态(如果可能的话,在这种情况下优先处理它将是完美的)。
所以我考虑为每个操作分配唯一ID,并使用相同的操作ID过滤Feed /状态...
START profile1=node({0}) match me-[r:FOLLOW*0..1]->subject with subject match
subject-[:STATUS]->lastStatus-[:NEXT*0..1]->status return distinct
status.actionId order by status.creationTime desc limit 10
但它无法执行...但例外:查询无效
未知标识符status
。
无论哪种方式,我认为该查询应该返回状态的actionId ..而不是实际的状态..
为了检索要通过actionId区分的状态,需要什么查询?如果在一个查询中有两个具有相同actionId的状态,我可以优先考虑吗?
这是解决该问题的正确方法:)?
感谢您的回答..