我有一个具有以下结构的neo4j图。
(账户)--- [交易] ---(账户)
交易是neo4j关系,账户是节点。
每笔交易都设置了各种属性,例如交易ID,金额,日期和其他各种银行信息。
我可以通过帐户ID运行搜索,并且返回正常。但是,当我按事务ID搜索时,neo4J搜索整个图形而不是使用索引,搜索失败。
我使用org.neo4j.unsafe.batchinsert.BatchInserterImpl.createDeferredSchemaIndex()
为Account.number和Transaction.txid创建了索引。该索引似乎适用于帐户(节点)搜索,但不适用于事务(关系)搜索。 (我还为节点和关系启用了自动索引,但它没有改变的东西)
我认为不支持对关系属性建立索引,因此考虑使中间节点保存属性信息。但是,如果可能的话,我更愿意坚持我的原创设计。
知道如何继续吗?
答案 0 :(得分:4)
您可以使用legacy indexes或auto indexes来建立关系索引。架构索引不支持索引关系。
原因是:通常您使用use节点来为您域中的#thing#或#entities#建模。关系将您的世界连接起来并将节点置于语义上下文中。在遵循该模型时,您通常不必索引关系,因为您的查询总是从#thing#开始,它始终是一个节点。
在你的模型中,你应该重新思考建模,我想这可能是有意义的
(account)-[:send]->(transaction)-[:to]->(account).
因此,交易本身就是一个东西,因此成为节点。