在Neo4j中使用Cypher查询带有“IN”子句的索引。

5
我想使用neo4j中的auto_index,并传入一个字符串数组进行匹配。我知道你可以在cypher查询的末尾添加IN子句,但这不会使用索引,并且我假设将扫描所有记录。那么使用索引查询的最佳方法是什么?
例如,假设在facebookId上有一个auto_index,并且有100万个用户节点,则获取facebookId在["123","456","789"]中的用户。
2个回答

11

仅限于当前Neo 1.9.M04版本,最多可使用512个字段进行操作。(我认为该版本使用的是Lucene 3.5) - Eve Freeman

1
您可以通过显式索引查找来执行此查询,例如:
start user = node:node_auto_index('facebookId:123 OR facebookId:456') match  ...

请参考http://console.neo4j.org/r/nj98lt


我想那样做可以行得通,但如果我有20或30个ID要匹配,可能会变得非常冗长。没有其他更简洁的方法吗? - MonkeyBonkey
顺便问一下,在Cypher中索引查询可以传递哪些运算符和参数的文档在哪里? - MonkeyBonkey
1
大部分的东西都在这里。它直接传递给Lucene用于默认索引:http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Overview - Eve Freeman
默认情况下是“OR”,顺便说一下:http://console.neo4j.org/r/cwqhmy提供了相同的结果,而不需要明确说明“OR”(仅供参考)。 - Eve Freeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接