Neo4j CYPHER node_auto_index用于范围查找

时间:2013-05-02 01:21:49

标签: indexing neo4j cypher

我想知道如何使用自动索引进行范围查找。如果我查询类似

的内容

START age=node:node_auto_index(age<20 and age>10) RETURN age;

它返回

Exception in thread "main" string literal or parameter expected.

我也试过像

这样的东西
START age=node:node_auto_index(age = range(10,20)) 
RETURN age;

但它看起来只需要age = "15"或类似的东西。

任何想法该怎么办?

3 个答案:

答案 0 :(得分:3)

Lucene documentation表示范围语法如下:

age:[10 TO 20]

结果查询(但尚未对此进行测试):

START age=node:node_auto_index("age:[10 TO 20]") 
RETURN age;

以下内容对您来说也很有趣:Range queries in Neo4j using Lucene query syntax

编辑:不确定它是否适合你;看看这个github issue

答案 1 :(得分:0)

为什么不使用where子句,如下所示?

START node=node:node_auto_index(name='PersonName') 
where node.age > 20 and node.age <20
RETURN node.age;

答案 2 :(得分:0)

在与Neo4J Technologies的Stefan Armbruster一起举办的研讨会之后,出现了同样的话题。

我们提出的最基本的解决方案是确保为numeric属性存储的所有值都具有相同的长度。因此,需要填写年龄属性值,如下,011,099,103 ......并且值存储为字符串而不是数值。

这样做一切都应该从索引开始。