更新:韦斯在这里击出一个本垒打!谢谢..我已经添加了一个Rails版本,我正在开发使用neography Gem ..完成同样的事情,但他的版本更快..看到下面的比较Neo4j性能 - 计数节点 - 链表性能 - 替代方案?
我在Neo4j(1.9, REST,Cypher)来帮助保持评论的正确顺序(是的,我知道我可以按时间排序)。
(object node)---[:comment]--->(comment)--->(comment)--->(comment).... etc
目前,我有900条意见和它采取秒在整个列表,让 - 完全不可接受的..我只是在该节点的ID(我知道,不要”这样做,但这不是我的帖子)。
我想要做的是找到评论的用户的ID,所以我可以返回一个计数..(如“乔和405人对你的帖子发表了评论”)..现在,我甚至没有计算在这一点上的唯一节点 - 我只是返回每个记录的author_id ..(我会担心后面的计数 - 首先照顾基本的性能问题)。
start object=node(15837) match object-[:COMMENTS*]->comments return comments.author_id
7秒是waaaay太长..
而不是使用一个链表,我可以只让一个对象,并直接链接的所有意见,以节点 - 但是这可能会导致超级节点这只是陷入困境,然后找到最新的评论,即使是跳过和限制,将是狗慢..
关系指数会在这里帮助吗?除了确保独特的关系,或者查看是否存在关系,我还没有使用过它们,但是我可以在密码查询中使用它们来帮助加快速度吗?
如果不是,我还能做些什么来减少返回ID所花费的时间?
比较:下面是一个使用 “第二阶段” 的Neography宝石的方法Rails的版本:
next_node_id=18233
@neo=Neography::Rest.new
start_node = Neography::Node.load(next_node_id, @neo)
all_nodes=start_node.outgoing(:COMMENTS).depth(10000)
raise all_nodes.size.to_i
结果:290ms发现526个节点..
Wes的解决方案用了5毫秒.. :-)
我将如何通过REST使用它?我没有使用JRuby - 相当普通的旧Rails 3.2和Rest .. – 2014-09-23 14:03:20
你将它安装到你的neo4j服务器lib文件夹中,重新启动,然后通过rest调用它:localhost:7474/linkedlistlength /:nodeid – 2014-09-23 14:15:21
好的。一个n00b在这里,但我停止了服务器,将该文件夹复制到我的rails项目的本地neo4j lib文件夹中,重新启动,并且出现:HTTP ERROR 404 访问/ linkedlistlength /:2343问题。原因: 未找到 本站由Jetty:// – 2014-09-23 14:50:42