基本上,您可以将这些配料很好地搭配在一起-知道哪种配料具有风味亲和力,可以制作出一些令人赞叹的新菜。
该应用程序允许您添加具有“亲和力”的配对-它们配对的程度如何-并搜索成分以查找与之配对的其他成分。
该应用程序是使用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