0

我有以下设置:用户和事件节点,带有 (user)-[:PUBLISH]->(event)。每个用户和事件都有多个属性。这些属性因用户(以及事件与事件)而异,这使得为它们创建索引变得困难,但是我需要通过这些属性快速查询用户和事件。

我需要执行的最简单的查询形式:查找具有属性 {x: 'a', ...} 的所有用户,这些用户至少发布了一个具有属性 { y: 'b', ...} 但还没有发布的事件发布具有属性 {z: 'c', ...} 的任何事件

所以我的问题是:我怎样才能最好地为这个查询建模数据?(neo4j 是否适合这个用例?)鉴于我必须有动态节点属性,我如何让它快速工作。Neo4j 中的 AFAIK 不能有复合索引,我需要为用户/事件的每个属性创建一个索引吗?

任何帮助/想法都将受到欢迎。谢谢!

4

1 回答 1

2

对于用户,我想最简单的方法是为所有可能用于查找用户的属性键配置自动索引。要将用户与事件相关联,我会尝试更详细地说明事件细节。例如,尝试使用 PUBLISH_EVENT_TYPEA、PUBLISH_EVENT_TYPEB、PUBLISH_EVENT_TYPEC ... 来代替通用的 PUBLISH 关系类型。

然后,您的查询将使用自动索引查找一个或多个用户,然后根据特定的关系类型匹配事件。这样做可以防止在遍历时检查属性,这有利于性能。

于 2013-10-19T09:37:46.383 回答