【问题标题】:Index on Node Properties in Neo4j <2.0Neo4j <2.0 中节点属性的索引
【发布时间】:2013-07-02 12:56:47
【问题描述】:

我们有以下场景: - 有User对象,最多100万 - 有不同种类的汽车对象(假设有来自梅赛德斯、法拉利、保时捷、宝马的汽车),也有多达 100 万个对象

使用图形数据库,我可以很容易地建模用户 A 喜欢汽车 B,并且我可以非常有效地找到用户 A 喜欢的汽车。

但是,我怎样才能有效地找到所有用户节点?我见过很酷的 Neo4j 2.0 Schema Types,但目前我必须使用 Neo4j 1.8。 我是否必须使用诸如“nodeProperty”之类的属性,其值为“用户”=用户,而“汽车”的值为=汽车确实可以找到它们?效率高吗?

我怎样才能有效地搜索来自特定年份并具有特定颜色的汽车? (假设 Car 对象可能具有此属性)我是否必须遍历所有 Cars 并寻找它?还是 Neo4j 的想法是我创建一个包含所有年份的超级节点,并将所有汽车连接到相应的年份节点?

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    您可以索引每个用户的某些属性,例如 userId 以轻松找到所有用户节点 (http://docs.neo4j.org/chunked/stable/indexing.html)

    对于汽车,您是否只想搜索特定年份和颜色的汽车?或者你想用这些来做更详细的查询?

    如果您只想直接搜索,那么您也可以考虑那里的索引。否则,年份节点甚至颜色节点将是我这样做的方式。 请注意,您可以同时使用索引(年份和颜色的索引)以及年份/颜色节点。在您进行更多涉及的查询之前,该索引可能有助于找到一组起始节点。如果颜色在这些查询中很重要,那么让汽车与颜色相关会比颜色作为汽车上的属性要好得多(因为必须经常检查属性,这比遍历关系不太理想)。 与所有建模查询一样,取决于您希望如何处理数据。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多