0

我打开了节点自动索引,它正在索引我需要的属性。如果我启动 Neo4j 服务器并打开 webadmin,我看到有一个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 查询?或者只是我上面查询中的单引号字符串?

4

1 回答 1

0

事实证明queryReadableIndex 的函数实际上需要一个Lucene Query,我现在意识到这就是我上面引用的内容。所以调用这段代码:

val nodes = db.index.getNodeAutoIndexer.getAutoIndex.query("__type:user AND __username:admin")

给了我我想要的。

于 2013-05-15T15:42:33.240 回答