我打开了节点自动索引,它正在索引我需要的属性。如果我启动Neo4j服务器并打开webadmin,我会看到根据this帖子有一个名为node_auto_index
的索引。它可以从webadmin完美运行,我可以像这样运行Cypher查询:
START n=node:node_auto_index('__type:user AND __username:admin') RETURN n
查询完全返回我的期望。但是,如果我从Scala应用程序关闭服务器并以嵌入模式打开数据库,则不起作用。如果我尝试运行相同的Cypher查询,则会收到node_auto_index
不存在的错误。我检查了GraphDatabaseService属性,并在右键上启动并运行自动索引,但是当获取所有索引名称的列表时,列表始终为空。我不能使用AutoIndex API,因为它只对一个属性进行索引,我绝对需要两者。
从这一点来看,使用Scala(Java)代码中的多个属性查询自动索引的最佳方法是什么?
编辑:我注意到ReadableIndex接口(自动索引就是这个)可以接受查询字符串。我找不到很多关于它的文档,所以我将尝试一些事情,但是有没有机会可以接受Cypher查询?或者只是我上面查询中的单引号字符串?
答案 0 :(得分:0)
事实证明,ReadableIndex的query
函数实际需要Lucene Query,我现在意识到这是我上面引用的内容。所以调用这段代码:
val nodes = db.index.getNodeAutoIndexer.getAutoIndex.query("__type:user AND __username:admin")
给了我我想要的东西。