有一個基於neo4j的rails應用程序並且想要實現標籤。不知道如何去做。正在考慮爲具有「標籤」標籤的節點創建新模型,但這似乎有點矯枉過正。對於基於Neo4j的應用程序,有沒有類似https://github.com/mbleigh/acts-as-taggable-on的方法?用Neo4j和Rails實現標籤的最佳做法是什麼?
3
A
回答
1
這取決於你想做任何對性能的考慮是什麼;)
創建Tag
模型是不是太矯枉過正,尤其是你一定要merge
你的標籤,只要你創建它們,以確保你不」 t創建重複。然後,您可以使用Neo4j的圖形遍歷功能從標籤跳轉到其他對象,反之亦然,還可以執行更復雜的查詢,例如根據對象共享/不共享的標籤數量在對象之間進行推薦。
如果你只是想有一個基本的字符串列表,Neo4j實際上支持在節點和關係上有數組屬性。您可以通過簡單地在模型中聲明屬性像這樣使用:
class ModelClass
include Neo4j::ActiveNode
property :tags
end
唯一的問題是,你不能基於陣列的索引(我認爲這對未來的計劃)。所以如果性能是一個大問題而不是僅僅顯示標籤列表,那麼Tag
節點可能是您最好的選擇。
此外,爲了在獲得大量標籤的情況下獲得最佳性能,您需要爲標籤名稱/文本/無論您稱之爲屬性編制索引。有幾個方法可以做到這一點:
class Tag
include Neo4j::ActiveNode
property :name, index: :exact
end
或者你可以使用一個Neo4j的約束,以確保沒有任何兩個節點具有相同的名稱:
class Tag
include Neo4j::ActiveNode
property :name, constraint: :unique
end
約束覆蓋性能下自動創建索引。
最後,如果您願意的Tag
模型不使用默認uuid
列用於唯一標識您的標記,而使用的名稱,你可以這樣做:
class Tag
include Neo4j::ActiveNode
id_property :name
end
這也爲name
創建一個約束屬性。
相關問題
- 1. git用於多語言實現的最佳做法是什麼?
- 2. 用mongoDB和主幹驗證rails的最佳做法是什麼
- 3. 最佳做法是什麼?
- 4. 在Android 2.1中實現下載的最佳做法是什麼?
- 5. Nginx和runit ....什麼是最佳做法
- 6. 在Rails中利用單詞的最佳做法是什麼?
- 7. log4cxx的最佳做法是什麼?
- 8. 什麼是ViewModel的最佳做法
- 9. Multigraph的最佳實現是什麼?
- 10. 有關const實例方法的最佳做法是什麼?
- 11. 在Android上使用SVG圖標的最佳做法是什麼?
- 12. Rails中模型過濾的最佳做法是什麼?
- 13. 寫書籤的最佳做法是什麼
- 14. WCF休息 - 最佳做法是什麼?
- 15. ASP.NET緩存,什麼是最佳做法
- 16. 使用PHP檢測標籤的最佳方法是什麼?
- 17. 標籤導航的最佳做法?
- 18. 在JSP中呈現JSON數據的最佳做法是什麼?
- 19. 實體訪問全局變量的最佳做法是什麼?
- 20. 在Linq2SQL中更新實體的最佳做法是什麼?
- 21. 實施api狀態端點的最佳做法是什麼?
- 22. 實施登錄(auth)屏幕的最佳做法是什麼?
- 23. 實例化JavaScript對象時的最佳做法是什麼?
- 24. nhibernate:實施平等的最佳做法是什麼?
- 25. 實現標籤頁的最佳方式
- 26. 使用jquery/javascript做下面的最佳做法是什麼?
- 27. Django:構建全球模板標籤的最佳做法是什麼?
- 28. 實現此算法的最佳方法是什麼?
- 29. 標準化CSS的最佳做法是什麼?
- 30. 在iOS中實現加密邏輯的最佳做法是什麼?