我目前正在试用 Neo4j,看看它能做什么。我的数据库由大约 54000 个节点和 10M 关系(2 种关系类型)组成,这些关系是使用https://github.com/jexp/batch-import从 TSV 文件导入的。我发现需要索引来在合理的时间内获取查询结果。
我想做的典型查询之一是列出与某种类型连接的节点,并且连接的节点具有某些值。就像是:
START
a=node(*)
MATCH
(a)-[r]->(b)
WHERE
id(a) <> 0
AND id(b) <> 0
AND type(r) = 'ASSOCIATION'
AND a.attr1 = 'value'
AND b.attr1 = 'value'
RETURN
a, b LIMIT 200.
自然,这个查询永远不会完成。
考虑到这一点,在现有数据库上为此类查询(批量创建?)关系索引的最简单方法是什么?以及具有某些属性值的节点的索引?
这是可以从 Web 控制台完成的,还是之后可以完成的?通过阅读 neo4j 手册,我了解到您想要编写一个自定义 java 实现,该实现逐个节点加载数据并在创建数据库时构建索引。我个人喜欢使用 python,但结果证明 python 绑定太慢,甚至无法导入当前的数据库。