搜索在 neo4j 中是如何工作的?

How the search works in neo4j?

如果我们想使用 neo4j 中的 personName 查找一个人的详细信息,我们需要遍历 label person 中的所有 nodes ].但是在 relational database 中,我们可以通过转到 person table 并找到记录来完成。那么,这种搜索在 neo4j 中是如何进行的?我是说

1) 它是否首先找到具有 label person 的所有节点,然后在那些 nodes 中搜索以与 personName

匹配

2) 搜索遇到的每个 node,如果 labelperson,则搜索 personName。如果不匹配则转到另一个 node 等等..

如果标签 :Person 和 属性 personName (CREATE INDEX ON :Person(personName)) 上有模式索引,则以下密码语句将通过简单的索引查找完成:

MATCH (n:Person{personName:'John'}) RETURN n

如果索引不存在,Neo4j 将迭代所有具有 Person 标签的节点,并通过它们的 属性 过滤它们(这在某种程度上与完整的 table 扫描相当在关系世界中)。