Neo4j
从版本labels
开始引入2.0
。根据他们对该功能的解释,标签用于将节点分组为命名集。
我一直在玩这个选项,似乎除了这样做之外没有办法告诉how many nodes are labelled with Foo
:
match n:Foo return count(n);
问题是在大型设备上,此操作非常慢。例如,在标有' 640K
的{{1}}个节点的数据库中,查询运行大约50秒。
我希望默认情况下标签会比属性带来一些性能提升,但他们似乎并没有这样做。所以我想知道是否有办法加快标记集大小的计算?有些Foo
魔法,也许?
一个相关的问题:Gremlin
中的标签是否被编入索引,或者在过滤速度方面是否与默认的任何其他非索引属性相似?
答案 0 :(得分:0)
由于我在Neo4j中找不到任何API,所以下面是一种方法。
Neo4j为每种标签类型创建一个独立的索引。每个创建的索引都是full Lucene index。由于它是Lucene索引,因此您可以使用Lucence API以只读模式打开索引并使用its numDocs method。
以只读模式打开非常重要。