Neo4j数据库执行错误搜索具有包含空格的节点名称的索引

时间:2014-06-12 06:15:24

标签: neo4j

我正在玩neo4j社区版2.0.1,我遇到了一个无法找到解决方案的问题。我对Cypher的无能可能会助长我的问题!

我有少量节点,在“Name”属性上有索引。出于演示目的,我有两个节点“Foo”和“Foo Bar”。在浏览器界面中运行以下任何Cypher查询都可以正常工作 - 返回一个或两个节点:

START n=node:node_auto_index("Name:Foo") match n RETURN n
START n=node:node_auto_index("Name:Foo*") match n RETURN n

但是,运行以下查询会返回Neo数据库错误(Neo.DatabaseError.Statement.ExecutionFailure) - 请注意名称中的空格:

START n=node:node_auto_index("Name:Foo Bar") match n RETURN n

我不知道这个问题可能是什么 - 这是我的搜索请求出错,还是数据库的已知问题?非常感谢!

1 个答案:

答案 0 :(得分:1)

提供给node:node_auto_index的字符串直接传递给索引提供程序(默认情况下为Lucene)。 Lucene查询语法适用,请参阅:http://lucene.apache.org/core/2_9_4/queryparsersyntax.html

空格是您的案例中的术语分隔符,因此您可以尝试:

START n=node:node_auto_index("Name:'Foo Bar'") match n RETURN n

(实际上 - 根据Stefan的评论如下:

START n=node:node_auto_index('Name:"Foo Bar"') match n RETURN n

谢谢Stefan!)