使用Cypher 2.0将Lucene查询传递给Neo4j REST API

使用Cypher 2.0将Lucene查询传递给Neo4j REST API,lucene,neo4j,cypher,Lucene,Neo4j,Cypher,如果我有一个Lucene查询,比如(标题:“foo-bar”和body:baz*)或标题:bat,有没有直接的方法将其传递到Cypher查询中?它看起来像是用来处理START和旧的node\u auto\u index的,但是我不知道如何正确地使用Cypher 2.0 我已尝试将其粘贴到MATCH子句中,但出现无效语法错误: MATCH (item:Item {...}) RETURN item 我即将编写一个解析器,将Lucene查询转换为参数化的Cypher查询,但我想先检查一下是否有更简

如果我有一个Lucene查询,比如
(标题:“foo-bar”和body:baz*)或标题:bat
,有没有直接的方法将其传递到Cypher查询中?它看起来像是用来处理
START
和旧的
node\u auto\u index
的,但是我不知道如何正确地使用Cypher 2.0

我已尝试将其粘贴到MATCH子句中,但出现无效语法错误:

MATCH (item:Item {...})
RETURN item

我即将编写一个解析器,将Lucene查询转换为参数化的Cypher查询,但我想先检查一下是否有更简单的方法。

您是正确的,您只能使用带START的Lucene查询。有两种方法可以查询您的数据。第一个是使用带有MATCH的2.0语法,但不支持Lucene。标签索引还不支持通配符搜索,但它应该包含在未来的版本中。您必须使用正则表达式来使用通配符进行搜索。因此,以下查询的性能可能不适合您的需要

MATCH (item:Item)
WHERE (item.title = "foo bar" AND item.body =~ "ba.*") OR item.title = "bat"
RETURN item
确保您的属性已编制索引(=标签索引,而不是lucene索引):

如果您仍要使用,您的查询将类似于:

START item=node:node_auto_index("(title:'foo bar' AND body:baz*) OR title:'bat'")
RETURN item

谢谢什么时候支持使用标签索引的通配符搜索?如果支持将很快添加,我宁愿不必创建二级索引。
START item=node:node_auto_index("(title:'foo bar' AND body:baz*) OR title:'bat'")
RETURN item