本月风味– Neo4j和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为搜索结果提供了两种可视化效果。 “探索”可视化基于节点链接树 ; 我们使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1 + 11 + 1111+ 11111+ ..... + 11111(2016个) 结果是几位数

# -*- coding: utf-8 -*- """ Created on Mon Mar 21 20:38:06 2016author: yanjie """1 11 1111 11111 ..... 11111(2016个) 结果是几位数 用什么数据结构 有几个6 写算法a []; m 0; six 0; for i in range(2016,0,-1):b (im) % 10;m (…

[回归分析][10]--相关误差的问题

[回归分析][10]--相关误差的问题这一篇文章还是来分析相关误差的问题。 1.游程数 定义:游程数--残差穿过x-轴的次数 用这个可以检查如残差有一块在x轴上面,一块在x轴下面的情形。 如上面这样的残差 下面构造两个统计量: 其中 n…

Spring 3 MVC异常处理程序

我遇到的大多数Spring 3错误处理示例代码似乎都提供了其用法的最简单概述,但是,有人说,如何处理错误比正常代码的工作方式更为重要。 前一天,当我在Spring(2)错误处理程序中遇到一个简单的GOTCHA时&#xf…

java编译找不到符号_javac编译时找不到符号?

我是个新手,在linux使用java编程时,出现这个情况。我把要引的包放在classpath中,红色部分:export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/hadoop-1.0.4.core.jar:${CLASSPATH}通过echo $CLASSP…

全备份、差异备份和增量备份概念详述

全备份、差异备份和增量备份概念详述 1、完全备份(Full Backup) 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份。换言之&#xff0…

微信接入登录功能access_token流程记录

提示:只有认证过的订阅号或者服务号才能获取access_token。 1.app微信登录第一步是,app调起来微信客户端,通过app端的配置,引入一个微信类库, 2.授权成功后,微信会返回你一个code。 将APP_ID替换成你在微信…

使用MVC模式制作游戏-教程和简介

游戏开发中一种有用的体系结构模式是MVC(模型视图控制器)模式。 它有助于分离输入逻辑,游戏逻辑和UI(渲染)。 在任何游戏开发项目的早期阶段,其实用性很快就会被注意到,因为它允许快速更改内容&…

boost

参考博客 http://www.cnblogs.com/lidabo/p/3805487.html http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html http://www.cnblogs.com/finallyliuyu/archive/2013/05/23/3094246.html http://www.cnblogs.com/lidabo/p/3782193.html http://www.cnblogs.com/z…

moment格式换时间_不一样的日期、时间转换(moment.js)

无意中遇到了一种很奇怪的日期格式,从接口中返回的日期是这样的,如 2018-02-06T11:59:2208:00 。然而这却不是我们想要的,我们要的是这种,YYYY-MM-DD HH:mm:ss。那么这种是怎么转换的呢?这时候就可以使用一款很好用的日…

并发模式:生产者和消费者

在我15年的职业生涯中,生产者和消费者的问题是我仅遇到过几次。 在大多数编程情况下,我们正在做的事情是以同步方式执行功能,其中JVM或Web容器自行处理多线程的复杂性。 但是,在编写某些需要的用例时。 上周,我遇到了一…

POJ 1006 - Biorhythms (中国剩余定理)

B - BiorhythmsTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1006Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中…

子线程中更新UI线程的三个方法

1、通过handler方式,sendmessage。 多个类间传递比较麻烦,也懒的写... 2、线程中通过runOnUiThread() new Thread() { public void run() { //这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnab…

mysql limit acs_mysql查询操作

简单查询&#xff1a;select * from 表名;避免重复&#xff1a;select distinct 字段 from 表名;条件查询&#xff1a;select 字段,字段 from 表名 where id<5(条件);四则运算查询&#xff1a;select id,dep_id,id*dep_id from company.employee5 where id<5;定义显示格式…

作业管理系统数据字典

转载于:https://www.cnblogs.com/heyangcan/p/5312394.html

使用Hive和iReport进行大数据分析

每个JJ Abrams的电视连续剧疑犯追踪从主要人物芬奇先生一个下列叙述情节开始&#xff1a;“ 你是被监视。 政府拥有一个秘密系统-每天每天每小时都会对您进行监视的机器。 我知道是因为...我建造了它。 “当然&#xff0c;我们的技术人员知道得更多。 庞大的电气和软件工程师团…

docker集群管理

docker集群管理 ps&#xff1a;docker machine docker swarm docker compose 在Docker Machine发布之前&#xff0c;你可能会遇到以下问题&#xff1a; 你需要登录主机&#xff0c;按照主机及操作系统特有的安装以及配置步骤安装Docker&#xff0c;使其能运行Docker…

从0学java_从零开始学JAVA(一.Java的基础语法)

基本语法编写 Java 程序时&#xff0c;应注意以下几点&#xff1a;大小写敏感&#xff1a;Java 是大小写敏感的&#xff0c;这就意味着标识符 Hello 与 hello 是不同的。类名&#xff1a;对于所有的类来说&#xff0c;类名的首字母应该大写。如果类名由若干单词组成&#xff0c…

linux mount (挂载命令)详解

挂接命令(mount) 首先&#xff0c;介绍一下挂接(mount)命令的使用方法&#xff0c;mount命令参数非常多&#xff0c;这里主要讲一下今天我们要用到的。 命令格式&#xff1a;mount [-t vfstype] [-o options] device dir 其中&#xff1a; 1.-t vfstype 指定文件系统的类型&…

Android官方培训课程中文版(v0.9.5)

http://hukai.me/android-training-course-in-chinese/index.html转载于:https://www.cnblogs.com/xiaoyao095/p/6125715.html

使用SaxParser和完整代码进行XML解析

SAX解析器使用回调函数&#xff08;org.xml.sax.helpers.DefaultHandler&#xff09;通知客户端XML文档结构。 您应该扩展DefaultHandler并重写一些方法来实现xml解析。 覆盖的方法是 startDocument&#xff08;&#xff09;和endDocument&#xff08;&#xff09;–在XML文档…