具有可变属性的节点,如何建模,索引和查询?

时间:2013-10-19 07:25:05

标签: neo4j

我有以下设置:用户和事件节点,(用户) - [:PUBLISH] - >(事件)。每个用户和事件都有多个属性。这些属性因用户(以及事件到事件)而显着不同,这使得很难为它们创建索引,但是我需要以快速的方式通过这些属性查询用户和事件。

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

的事件

所以我的问题是:如何才能最好地为此查询建模数据? (并且neo4j适合这个用例,就此而言?)我如何让它快速工作,因为我必须拥有动态节点属性。 neo4j中的AFAIK不能有复合索引,是否需要为user / event的每个属性创建一个索引?

欢迎任何帮助/想法。谢谢!

1 个答案:

答案 0 :(得分:2)

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

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