heroku_本月风味– Neo4j和Heroku

heroku

Neo4j今年早些时候发起了一项挑战,即“ 种子 ”,以使人们使用Neo4j附加组件Heroku上创建模板或演示应用程序。 经过许多内部辩论之后,我决定进入,但由于缺乏想法而陷入绝望。 当我没有做任何特别的事情时,我想到了这个主意-构建一个简单的应用程序,以帮助人们找到口味相辅相成的成分。

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

该应用程序是使用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为搜索结果提供了两种可视化效果。 “ Explore”可视化基于Node-Link树 ; 我们使用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

heroku

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值