1

我需要一个设计建议来为数组实现索引或关系。我正在使用最新的 Spring Data Neo4j 来实现它我有一个节点,它具有如下类别的字段,

@NodeEntity
Class Product {

      Set<Category> Categories;

}
public enum Category {
RTW,
SHOE,
DENIM,
OUTER_WEAR
}

现在,我需要找出具有 X 和 Y 类别的产品(例如:RTW 和 SHOE)。实现这一目标的最佳方法是什么?我可以在数组类型上创建索引吗?还是我应该为 Category 创建一个新的 NodeEntity 并在 Product 和 Category 之间创建必要的关系?

对此的任何帮助将不胜感激。提前致谢。

4

1 回答 1

3

您应该使用关系,因为它是图形数据库的本质。

[ProductA(Node)] ---[HAS_CATEGORY(Relation)]---> [Category1 (Node)] <--[HAS_CATEGORY(Relation)]---- [ProductB (Node)]

想象一下,您想显示每个类别中的产品数量、基于最畅销产品的最受欢迎的类别、用户推荐等……使用横向查询很容易计算。您应该使用索引进行优化,而不是关联。

看看 gremlin 的视频演示,真的很强大:http ://www.youtube.com/watch?v=5wpTtEBK4-E

Spring Data 支持 Cypher 和 Gremlin 查询语言。

有关图形数据库中建模类别的更多信息,请参见此处:http: //blog.neo4j.org/2010/03/modeling-categories-in-graph-database.html

于 2012-08-27T12:36:52.353 回答