START node=node:TEST_INDEX('*:*')
WHERE node.nodeName =~ '" + nodeName + "'
RETURN node.nodeName as nodeName
在此特定查询中,:是什么意思?
我已将此查询替换为
MATCH(node:TESTDATA)
WHERE node.nodeName =~ '(?i)CXH.*'
RETURN node.nodeName as nodeName
但是返回的结果完全不同,应该返回与预期相同的结果。
答案 0 :(得分:1)
此查询('*:*')表示给我所有索引列和所有索引值。
以下摘自neo4j ver 3.1文档http://we-yun.com/doc/3.1/neo4j-developer-manual-3.1-dotnet.pdf
通过旧索引查找起点时(按索引查询节点)
通过更复杂的Lucene查询可以找到起点时, 这是使用的语法:node:index-name(“ query”)。这使您可以 编写更高级的索引查询。
查询
START n = node:nodes("name:A")
RETURN n
由索引返回名称为“ A”的节点。
Result
+-------------------+
| n |
+-------------------+
| Node[0]{name:"A"} |
+-------------------+
1 row
答案 1 :(得分:0)
这应该做同样的事情。
MATCH(node:TESTDATA)
WHERE node.nodeName = $nodeName
RETURN node.nodeName as nodeName
第一个查询中的START索引查找只是说:给我所有该索引中的所有内容,并带有TESTDATA标签。
它实际上没有使用索引来查找,这不明智。
如果您现在在:TESTDATA(nodeName)上创建索引,它将在查询中使用它,因此您的查询会更快。