Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2015年使用Python中Neo4j的最合适方式_Python_Neo4j_Gremlin_Py2neo_Bulbs - Fatal编程技术网

2015年使用Python中Neo4j的最合适方式

2015年使用Python中Neo4j的最合适方式,python,neo4j,gremlin,py2neo,bulbs,Python,Neo4j,Gremlin,Py2neo,Bulbs,我正在使用最新的社区Neo4j(2.2.0-M03)来存储我的图形。我对从Python访问它感兴趣。根据官方Neo4j,有几种选择 从我通过检查文档、玩游戏和检查了解到,py2neo是唯一支持Neo4J2(和标签)的。然而,如果我想在Neo4j上编写和运行特定的算法,我应该使用Gremlin,通过灯泡,但它似乎不支持Neo4j 2 现在,我想使用一些Neo4j中目前没有的自定义算法,比如扩展激活。 在Java中直接用Neo4j编写算法并通过py2neo使用cypher命令从Python运行算法是

我正在使用最新的社区Neo4j(2.2.0-M03)来存储我的图形。我对从Python访问它感兴趣。根据官方Neo4j,有几种选择

从我通过检查文档、玩游戏和检查了解到,py2neo是唯一支持Neo4J2(和标签)的。然而,如果我想在Neo4j上编写和运行特定的算法,我应该使用Gremlin,通过灯泡,但它似乎不支持Neo4j 2

现在,我想使用一些Neo4j中目前没有的自定义算法,比如扩展激活。 在Java中直接用Neo4j编写算法并通过py2neo使用cypher命令从Python运行算法是唯一的选择吗?我错过什么了吗

干杯


另外,我想发布我引用的所有软件的链接,但不幸的是,我需要至少10个声誉才能发布2个以上的链接…

这是一个非常棘手的问题,似乎你需要的是设计指导,而不是一个快速的neo4j问题。根据您使用传播激活的方式,最好不要修改服务器,但我不能确定,因为可能涉及到您的用例。请记住,您可以始终将neo4j用作图形存储,然后将更高级别的概念(如扩展激活)放在应用程序代码中,而不是放在服务器中

这个问题假设我认为你想把它放在服务器上。那么有什么选择呢?一般来说,您可以编写一个服务器插件并扩展RESTful API(这对py2neo没有帮助)。另一方面,我认为现在不支持定义自己的自定义cypher函数,因此您不必修改cypher语言本身,然后使用py2neo绑定来开发一个奇特的新cypher函数。建议您考虑一个实现的激活激活。如果你再次这样做,我不知道py2neo会如何帮助你


短期内,我认为你应该考虑不修改NeN4J本身,而是将你的传播激活放在Python代码中,它可能使用PY2NEO。从长远来看,如果neo4j提出了一种实现cypher用户定义函数(UDF)的方法,我知道这已经在开发路线图上了(也许?),那么这可能是一个更好的选择,但如果没有更多的要求和细节,我不会推荐它。

你能描述一下“编写算法”是什么意思吗?什么样的?是的,一般来说,py2neo是一个不错的选择,但是如果你不明确自己想做什么,就很难给你建议。谢谢@FrobberOfBits,我编辑了这个问题。我想使用自定义算法,例如传播激活。这可能是“在Java中直接用Neo4j编写算法并通过http从Python运行它们是唯一的选择吗?”@MichaelHunger如果你的措辞是实际问题,那么答案很简单--“不”。)也许@redsk建议使用类似于networkx的python包?谢谢@frobberoffits。我实际上是想找出我可以考虑的替代方案,为我的应用程序设计一个好的设计。Neo4j非托管扩展确实是一个很好的建议。一个可能的替代方法是使用图形语言(可能是通过(不适合Neo4j 2.2 afaik)。在这种情况下,p2neo支持通过调用Gremlin脚本。最后,正如您所建议的,可以直接在Python中实现扩展激活(或其他图形算法)(可能是py2neo).然而,在这种情况下,我可能希望性能会有点下降,因为算法的每一步都意味着将数据从Neo4j来回传递到Python应用程序。我不知道你的应用程序,所以我不能肯定,但一般来说,我建议不要过早优化。在DB之外做一些事情也会使你与Python应用程序隔离DB的API发生了变化。在任何情况下,您都将编写额外的python,因为如果您使用非托管扩展路径(将算法放入DB),您仍然必须以某种方式与新算法进行接口,这意味着python比py2neo提供的现成python要多。