问题标签 [neo4j-spatial]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - 提高在 Neo4j Spatial 中查找最近节点的性能
我的目标是通过给定的经度和经度找到最近的节点。我创建了简单点层并且我正在使用findClosestGeometies
查询,但是响应时间,即使是相对较小的数据库,也相当不令人满意。我执行以下操作以创建我的图层:
然后使用简单的 java 程序,我将 ~70k 节点添加到层并运行示例查询:
它正在工作,但每个响应需要或多或少 8 秒。有没有办法加快速度?任何想法我应该使用什么?
php - Neo4j Spatial 3.0.2:未找到索引提供程序“空间”
我正在尝试使用 neo4j 3.0.2 和 neo4j-spatial 为 3.0.2 创建空间数据库。我已经安装了插件,并检查了插件是否使用 cURL 运行curl -v http://neo4j:neo4j@localhost:7474/db/data/
,输出如下:
现在我可以创建一个新的 simplePointLayer:
这将使用 rTree 创建空间根节点。但是当我现在想创建一个空间索引时:
我遇到了错误消息:
我究竟做错了什么?我检查了很多论坛等,但答案似乎总是安装我拥有的空间插件,它似乎根据第一个输出工作。
编辑 15.06.2016
奇怪的是我可以向 rTree 添加节点:
我可以通过 REST 查询节点:
但是为什么不让我创建索引呢?还是自动进行索引?如果是这样,我如何使用 CYPHER 进行查询(例如在 Web 控制台中)?
任何帮助,将不胜感激!干杯
maven - Neo4j 空间服务器插件 3.0.2 是否适用于 Neo4j 3.0.3 社区?
很长一段时间以来,我一直在努力使用我在网上找到的几种方法来安装 Neo4j 空间。
我正在使用 neo4j-community-3.0.3,但我不记得我是从哪个链接获得的。它是来自 ftp 站点的预编译版本(我相信它是 neo4j 网站某处的 /archives 文件夹,但我终生无法在 google 中找到它)。如果有人有下载neo4j预编译版本的链接,将不胜感激。neo4j other-releases 网页仅提供最新版本:https ://neo4j.com/download/other-releases/
我尝试从 github 编译我自己的 neo4j 版本,但老实说它非常令人困惑,因为目录树非常密集。似乎社区版和企业版都包含在同一个仓库中,没有自述文件,所以我什至不知道从哪里开始。
就插件而言,我已经尝试了预编译版本和我自己的编译版本。对于预编译,我已按照 git 页面上的说明进行操作。
https://github.com/neo4j-contrib/spatial#using-the-neo4j-spatial-server-plugin
我下载了 jar 文件,并将其复制到 $NEO4J_HOME/plugins/ 然后我重新启动了 neo4j 服务器。最后,我进行了其余调用以查看插件是否已加载,但我没有看到它。
编译的版本给了我同样的结果,只是需要更长的时间来实现。我克隆了版本 3.0.2 的 git repo,并运行以下命令:
注意:这个 mvn 命令实际上在某一时刻对我来说是失败的,但是经过一番谷歌搜索后,我发现这个命令有效
最后我跑
瞧,与以前完全相同的结果(没有插件列表)。
我从来没有安装过这么多的麻烦。我真的不想回到版本 2.*,因为我想利用带有 python 的新螺栓驱动程序,并获得最新和最好的性能。请,非常感谢任何帮助。(即使只是找到 Neo4j 预编译版本的直接链接档案也会对我有所帮助)。
java - 如何在 Neo4J 空间中创建 SimplePointLayer?
我在堆栈上看到了一些帖子,展示了如何创建一个 simplePointLayer。但是,这个过程对我来说失败了。我正在使用 Neo4J 版本 3.0.2 和空间插件版本 3.0.2。
这些页面中的每一个都包含用于创建 SimplePointLayer 的相同说明集,如下所示。
这一步对我来说很好:
我不确定在哪里可以看到图层列表,但响应是 200,所以我假设这里一切正常。
以下步骤是我卡住的地方:
我在文件 tmp.json 中有上面的 json,然后我运行
这会生成以下消息:
我不知道从这里去哪里。我假设“提供者”是插件。我不是 JAVA 人,所以我不确定如何处理类路径。在\知道如何处理这个问题之前有没有人遇到过这个错误?
neo4j - 数据模型如何影响使用 CYPHER 的 neo4j 写入性能?
我一直在努力使用 Neo4J 3.0.3 为我的应用程序实现可接受的性能。这里有一些背景:
我正在尝试用 Neo4j 替换 Apache Solr,以扩展其功能,同时保持或提高性能。
在 Solr 中,我的文档基本上看起来像这样:
由于 Solr 是一个键值对数据存储,我对 Neo4J 的初始转换将很简单,因此我可以对使用 API 有所了解。
我的方法本质上是让每个 Solr 记录等同于一个 Neo4J 节点,其中每个键值都将成为一个节点属性。
显然需要进行一些调整(将 None 更改为“None”(python),将 ISO 时间更改为纪元时间(neo4j 不支持索引日期时间),将点更改为 lat/lon(neo4j 空间索引)等)。
我的目标是使用这个模型加载 Neo4J,不管它有多么幼稚。
这是我在加载单个记录时进行的休息调用的示例(使用 http:localhost:7474/db/data/cypher 作为我的端点):
请注意,我实际上已经删除了很多用于测试 neo4j 的参数。
目前我有严重的性能问题。对我来说,将这样的文档加载到 Solr 大约需要 2 秒。对于 Neo4J,它需要:
使用 REST API 约 20 秒
使用 BOLT 约 45 秒
使用 py2neo 约 70 秒
我有大约 50,000,000 条记录需要加载。在 Solr 中执行此操作通常需要 24 小时,因此 Neo4J 可能需要将近一个月!
我记录了这些时间,没有对我的“元”属性使用唯一性约束,也没有将每个节点添加到空间索引中。这种情况下的时间结果非常糟糕。
遇到这个问题,我尝试在线搜索性能调整。以下事情并没有改善我的情况:
- 将打开文件限制从 1024 增加到 40000
- 使用 ext4,并按照此处记录的方式对其进行调整
- 将页面缓存大小增加到 16 GB(我的系统有 32 个)
到目前为止,我只讨论了加载时间。在我一夜之间加载了大约 50,000 个节点后,我尝试对我的空间索引进行查询,如下所示:
以及我的时间索引,如下所示:
这些简单的查询实际上需要几分钟,可能只返回几个节点。
在 Apache Solr 中,空间索引非常快并且在 5 秒内响应(即使加载了所有 50000000 个文档)。
在这一点上,我担心这种性能滞后是否是由于我的数据模型的性质、我的服务器的配置等造成的。
我的目标是从这个模型中推断出来,并将几种测量类型移动到它们自己的节点类中,并创建从我的基本记录节点到这些的关系。
我是否有可能滥用 Neo4j,并且需要重新创建此模型以使用关系和几种不同的节点类型?我应该期待看到显着的改善吗?
作为旁注,我最初计划使用三重存储(特别是议会)来存储这些数据,在努力使用 RDF 之后,我认为 Neo4J 看起来很有前途,而且更容易启动和运行。回到 RDF 是否值得?
欢迎任何建议,提示,评论。先感谢您。
编辑:
正如评论中所建议的,我已经改变了加载脚本的行为。
以前我以这种方式使用python:
使用这种方法,实际的 .run() 语句几乎可以立即运行。.close() 语句是所有运行时间发生的地方。
我修改的方法:
我有点困惑,因为它的行为几乎相同。.close() 仍然需要大约 45 秒,只是它没有提交。由于我在每个语句中重用相同的标识符(CREATE (r:record {...}) .... CREATE (r:record {...}) ...),因此我收到了有关此的 CypherError行为。目前我真的不知道如何避免这个问题,此外,运行时间似乎根本没有改善(我希望一个错误实际上会使这个终止更快)。
neo4j - 如何有效过滤 Neo4j 中多个过程调用的结果
我设置了一个 GraphAware 时间树和空间 r 树来引用我图中的大量节点。我正在尝试按时间和空间搜索这些记录。
单独我可以在大约 5 秒内从这些查询中收集结果:
当我尝试过滤这些结果时,性能会急剧下降。Neo4j 已经在我的系统中使用了大量的内存,所以我的印象是这个命令的内存占用在我的系统上太多了,并且查询永远不会完成。(我正在使用 neo4j-shell 来运行这些命令)
我想知道有效过滤这两个语句调用结果的最佳方法是什么。我尝试使用 REDUCE 子句,但无法完全弄清楚语法。
作为一个附带问题,鉴于这是我将向我的数据库发出的最常见的查询类型,这是一种做事的好方法(如使用时间树和 r 树引用同一组节点)?我还没有在 neo4j 中找到任何其他支持在单个结构中同时索引空间和时间的工具,所以这是我当前的实现。
neo4j - 使用 neo4j 空间密码查询与 SDN4 存储库进行集成测试
我开始在我的一些代码中使用 neo4j-spatial。我认为我可以通过将空间服务器库作为 maven 依赖项包含在我的项目中来集成测试 neo4j-spatial 代码。不过,这对我不起作用。我在任何地方都找不到任何文档。
我怎样才能让我的集成测试工作?
任何提示任何人?:)
只是为了说明我在做什么,我在下面粘贴了我的控制器、服务和存储库代码的一部分,最后的代码发布是我的测试,这些测试不适用于嵌入式 TestServer。
存储库
服务
控制器
服务测试
(这是我的测试,我无法作为针对嵌入式 TestServer 的标准构建的一部分工作)
java - Neo4j-spatial maven 构建失败
我知道有一个类似的问题(质疑:Neo4j Spatial: can't run spatial),但是在安装依赖项时似乎解决了这个问题。我认为这不是我的情况的解决方案。
安装 Neo4j 和安装 maven 之后
创建一个名为 spatial 的目录并将 neo4j-spatial 克隆到该文件夹。
然后我尝试 maven 安装这个 git clone。
经过大量测试后,它返回“构建失败”
在我解决这个“构建失败”的问题中,我发现大多数 Maven 安装错误是由于依赖关系造成的。但是,这些错误消息并不表示缺少任何依赖项?
我尝试使用 mvn verify 但这似乎只是尝试再次构建插件返回相同的构建失败。
两个问题;- 我是否缺少依赖项或其他问题?- 如果我缺少依赖项,它们是什么以及如何安装它们?
提前致谢!
java - Neo4j-spatial 导入 OSM 不匹配顶点卡住了?
与这个问题相关(Neo4j-spatial importing OSM mismatching vertices found)。这个寻找不匹配的过程被卡住了。
然后就卡住了...
对此有什么解释吗?我做错什么了吗?