更新:韋斯在這裏擊出一個本壘打!謝謝..我已經添加了一個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