我正在使用neo4j-core gem(Neo4j::Node API)。它是我能找到的唯一与MRI兼容的neo4j的Ruby绑定,因此很有价值,但它的文档是一个废话(它缺少链接,很多印刷错误,很难理解)。在第一个链接的标签和索引支持部分中,它显示:
创建一个[sic]标签person
和一个属性
Neo4j::Node.create({name: 'kalle'}, :person)
在标签上添加索引
person = Label.create(:person)
person.create_index(:name)
drop index
person.drop_index(:name)
(我认为其第二个代码行是以下的印刷错误)
person = Node4j::Label.create(:person)
Neo4j::Node.create
和Neo4j::Node#add_label
可以为标签带来多个参数。在节点上有多个标签意味着什么?create
命令,则每次都会创建一个不同的节点对象。拥有多个具有相同名称的节点意味着什么?标签不是标识节点的东西吗?答案 0 :(得分:4)
标签是一种分组节点的方式。您可以将标签分配给多个节点或仅一个节点。可以将其视为组合在一起的节点集合。它们允许您分配索引和其他约束。
索引允许快速查找节点或边缘,而无需遍历整个图形来查找它们。可以将其视为指向特定节点/边索引的直接指针表。
答案 1 :(得分:2)
当我读到您从文档中粘贴的内容时(无可否认,知道关于neo4j的最轻微的事情):
它是一个图形数据库,其中每个数据都是具有一定数量属性的节点。
每个节点都可以有标签(或更多,大概是?)。可以把它想象成一种类型 - 或者更恰当地说,用Ruby术语来说就是一个模块。
它是一个数据库,因此节点可以成为索引的一部分,以便更快地访问。节点的子集也是如此,因此具有特定标签的节点也是如此。
换句话说:将标签视为数据库中的表格。节点作为数据库行,可以属于一个或多个标签/表,或者根本不属于标签/表。并且索引作为DB对行集的索引。