基本上,您可以將這些配料很好地搭配在一起-知道哪種配料具有風味親和力,可以制作出一些令人贊嘆的新菜。
該應用程序允許您添加具有“親和力”的配對-它們配對的程度如何-并搜索成分以查找與之配對的其他成分。
該應用程序是使用Grails 2.0前端構建的,可視化是非常簡潔的d3.js庫的結果,并且與Neo4j的交互是通過Neo4j REST Api完成的。
整個程序都部署在Heroku(帶有Neo4j附加組件)上,而源代碼可以在github上找到。
要開始使用Grails 2.0,Neo4j附加組件和Heroku,請閱讀有關主題的Aldrins帖子: http ://thought-bytes.blogspot.in/2012/02/grails-20-heroku-and-neo4j-addon.html
自述文件中介紹了如何在本地以及在Heroku上部署Flavorwocky。
該模型非常適合于圖表-如您所見,它非常簡單:

每個類別都有顏色編碼-為方便起見,它作為屬性存儲在類別節點上,但是當然不必如此。
Flavorwocky也被選為該挑戰的基礎,因為它是圖形的真實世界用例,我希望本條目真正專注于Neo4j,而不是支持風鈴。
設定
當應用程序啟動時,我們檢查數據庫是否為空。 為此,我們從參考節點執行遍歷 ,以查找與其連接的任何類別。 如果沒有,則我們先創建類別集,方法是先創建類別的節點 ,然后創建與參考節點的關系 。 我們還創建索引 “成分”,該索引用于索引成分名稱。 源代碼: https : //github.com/luanne/flavorwocky/blob/master/grails-app/conf/BootStrap.groovy
添加配對:
添加配對涉及
- 檢查任一節點是否已經存在以避免重新創建它
- 創建兩個節點并將它們在單個事務中鏈接到其類別
- 在上面的同一筆交易中創建它們之間的關系
為此,我們使用了批處理操作 (注意,這仍然是實驗性的)。
來源: https : //github.com/luanne/flavorwocky/blob/master/grails-app/controllers/com/herokuapp/flavorwocky/FlavorwockyController.groovy (fetchOrCreateNodes())
自動完成 :這只是一個索引查找 ,其名稱匹配部分輸入的成分。 來源: https : //github.com/luanne/flavorwocky/blob/master/grails-app/controllers/com/herokuapp/flavorwocky/FlavorwockyController.groovy (autosearch())
可視化:
我們使用d3.js為搜索結果提供了兩種可視化效果。 “探索”可視化基于節點鏈接樹 ; 我們使用Cypher查詢來查找與所搜索成分配對的所有成分(最多3個層次),將其轉換為適當的數據結構,并將其呈現為JSON。 請注意,盡管可視化是交互式的,但數據獲取不是。 一次可以獲取3個級別的整個數據集-將來的增強功能是僅在擴展節點時才可以獲取子級。
來源: https : //github.com/luanne/flavorwocky/blob/master/grails-app/controllers/com/herokuapp/flavorwocky/FlavorwockyController.groovy (getSearchVisualizationAsTreeJson())
盡管這棵樹很漂亮,但缺點是它是一棵樹,因此,如果孩子彼此鏈接,那么您會在樹中看到該成分的多個實例。 因此,我們嘗試了另一種可視化方法來捕獲成分之間的相互關系,并且還捕獲了有趣的事實(例如風味三重奏)-如果您在網絡可視化中看到一個三角形,則這三種成分可以很好地結合在一起的可能性很高。
為此,我們使用了力導向圖 。 同樣, Cypher查詢可以解決這個問題(這次深入了5個級別以生成更豐富的模型)。
來源: https : //github.com/luanne/flavorwocky/blob/master/grails-app/controllers/com/herokuapp/flavorwocky/FlavorwockyController.groovy (getSearchVisualizationAsNetworkJson())
在兩個示例中,配對的親和力用于計算成分之間連接器的長度,這表明較短的連接具有比較長連接的成分更好的配對。
就是這樣! 這個應用程序可以做很多事情,但是需要等待一些時間。
如果您喜歡Flavorwocky ,或者只想讓我贏,請發布有關Flavorwocky的 推文 。 投票也有幫助!
參考: 本月風味-用于Heroku的Neo4j附加組件和本月 風味-Neo4j和Heroku,是我們JCG合作伙伴的第二部分 ? Thought Bytes博客上的Aldrin和Luanne Misquitta。
翻譯自: https://www.javacodegeeks.com/2012/02/flavor-of-month-neo4j-and-heroku.html