在数据库上创建Neo4j索引
我目前正在试用Neo4j,看看它能做些什么。我的数据库由大约54000个节点和10M个关系(2种关系类型)组成,这些关系是使用从TSV文件导入的。我发现索引需要在合理的时间内获得查询结果 我想要进行的一个典型查询是列出以特定类型连接的节点,并且连接的节点具有特定的值。比如:在数据库上创建Neo4j索引,neo4j,Neo4j,我目前正在试用Neo4j,看看它能做些什么。我的数据库由大约54000个节点和10M个关系(2种关系类型)组成,这些关系是使用从TSV文件导入的。我发现索引需要在合理的时间内获得查询结果 我想要进行的一个典型查询是列出以特定类型连接的节点,并且连接的节点具有特定的值。比如: START a=node(*) MATCH (a)-[r]->(b) WHERE id(a) <> 0 AND id(b) <> 0 AND
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.
开始
a=节点(*)
匹配
(a) -[r]->(b)
哪里
id(a)0
而id(b)0
和类型(r)=‘关联’
和a.attr1='value'
和b.attr1='value'
返回
a、 b限额200。
当然,这个查询永远不会完成
你在寻找一个特定的开始吗 如果没有,您可以尝试为您的关系编制索引,然后从一开始就将其删除,然后再继续:
START
specificRelationship=relationship:RelIndex(key='value')
MATCH
a-[specificRelationship]->b
WHERE
AND a.attr1 = 'value'
AND b.attr1 = 'value'
RETURN
a, b LIMIT 200
回答您的问题:
(2) 从MySQL的角度来看,gremlin中是否有为现有数据创建索引的选项?在MySQL中,您只需执行CREATEINDEX命令,难道没有类似的方法吗?每次需要包含大量数据的索引时,重新加载整个数据库看起来很麻烦。在neo4j中,您需要自己编制索引,这不是自动为您完成的。谢谢!我通过以下操作稍微修改了批导入源代码,并创建了相关的节点和边缘索引。似乎也可以使用gremlin构建某种索引(但我不知道如何在gremlin中进行适当的过滤,以获得我想要的顶点集,而不是g.getVertices()):indexKeys=new HashSet();添加索引键(“属性1”);index=g.createAutomaticIndex(“nodeIndex”,Vertex.class,indexKeys);automaticindexelper.reIndexElements(g,index,g.getVertices());