Neo4j关系指数 - 搜索关系属性

时间:2014-08-27 22:22:30

标签: java neo4j bigdata

我有一个具有以下结构的neo4j图。

(账户)--- [交易] ---(账户)

交易是neo4j关系,账户是节点。

每笔交易都设置了各种属性,例如交易ID,金额,日期和其他各种银行信息。

我可以通过帐户ID运行搜索,并且返回正常。但是,当我按事务ID搜索时,neo4J搜索整个图形而不是使用索引,搜索失败。

我使用org.neo4j.unsafe.batchinsert.BatchInserterImpl.createDeferredSchemaIndex()为Account.number和Transaction.txid创建了索引。该索引似乎适用于帐户(节点)搜索,但不适用于事务(关系)搜索。 (我还为节点和关系启用了自动索引,但它没有改变的东西)

我认为不支持对关系属性建立索引,因此考虑使中间节点保存属性信息。但是,如果可能的话,我更愿意坚持我的原创设计。

知道如何继续吗?

1 个答案:

答案 0 :(得分:4)

您可以使用legacy indexesauto indexes来建立关系索引。架构索引不支持索引关系。

原因是:通常您使用use节点来为您域中的#thing#或#entities#建模。关系将您的世界连接起来并将节点置于语义上下文中。在遵循该模型时,您通常不必索引关系,因为您的查询总是从#thing#开始,它始终是一个节点。

在你的模型中,你应该重新思考建模,我想这可能是有意义的

 (account)-[:send]->(transaction)-[:to]->(account).

因此,交易本身就是一个东西,因此成为节点。