📅  最后修改于: 2023-12-03 15:33:05.877000             🧑  作者: Mango
Neo4j 是一款图形数据库,它的数据模型以图形为中心,用节点和关系来表示数据。在 Neo4j 中,索引用于查找节点,它可以大大提高查询节点的速度。
Neo4j 支持两种类型的索引:节点索引和关系索引。
节点索引可以用于查找具有特定属性值的节点。在 Neo4j 中,可以使用以下类型的节点索引:
基于属性的索引是最常见的类型,它可以用于查找具有特定属性值的节点。属性索引可以使用以下类型的属性:
使用基于属性的索引需要创建一个索引并将其附加到属性上。以下是一个使用 Cypher 创建基于属性的索引的示例:
CREATE INDEX ON :Person(name)
以上示例中,将在 Person
节点的 name
属性上创建一个索引。
为了使用基于属性的索引,可以使用 MATCH
语句加上 WHERE
子句,例如:
MATCH (p:Person)
WHERE p.name = 'John'
RETURN p
以上示例中,将返回具有名为 John
的 name
属性的所有 Person
节点。
全文索引用于搜索节点中的文本内容。使用全文索引需要使用 db.index.fulltext.createNodeIndex
创建索引。以下是一个使用 Cypher 创建全文索引的示例:
CALL db.index.fulltext.createNodeIndex("myIndex", ["Person"], ["name", "description"])
以上示例中,将为 Person
节点的 name
和 description
属性创建一个名为 myIndex
的全文索引。
为了使用全文索引,可以使用 MATCH
语句加上 WHERE
子句,例如:
MATCH (p:Person)
WHERE p.name CONTAINS 'John'
RETURN p
以上示例中,将返回具有名为 John
的 name
属性的所有 Person
节点。
关系索引用于查找具有特定属性值的关系。在 Neo4j 中,关系索引可以使用以下类型的关系:
使用关系索引需要创建一个索引并将其附加到关系上。以下是一个使用 Cypher 创建关系索引的示例:
CREATE INDEX ON :KNOWS(since)
以上示例中,将在 KNOWS
关系的 since
属性上创建一个索引。
为了使用关系索引,可以使用 MATCH
语句加上 WHERE
子句,例如:
MATCH (a)-[r:KNOWS]->(b)
WHERE r.since > 2010
RETURN a, b, r
以上示例中,将返回所有 since
属性大于 2010 的 KNOWS
关系。
索引在 Neo4j 中被广泛使用,可以大大提高查询节点的速度。可以使用基于属性的索引和全文索引来查找具有特定属性值的节点,也可以使用关系索引来查找具有特定属性值的关系。