如何使用 neo4j/Java 查找特定节点
How to find a particular node with neo4j/Java
我想通过 neo4j 的嵌入式 java 框架检索具有特定标签(或标签集)或属性(或属性集)的节点或节点列表。
看这个问题:Select a node by name in NEO4J in Java
如果您想搜索具有特定属性或标签的节点,看来您必须创建索引。但是,如果我编写自己的密码命令来执行相同的操作,则不必创建索引,我只需执行一个简单的查询即可:
Match (n:Entity:Person) return n;
我将简单地获取具有该标签组合的节点列表。如果每次都创建索引,这在嵌入式 Java 中不容易做到吗?
如果您的节点上有标签,就像您的查询所建议的那样,那么有一个简单的方法可以 GraphDatabaseService#getNodesByLabelAndProperty(Label label, String key, Object value)
所以是的,你可以做到。
尽管如此,仍建议使用索引。问问自己,如果没有索引,数据库将如何执行此操作?好吧,它可能会拉出一个以您指定的方式标记的所有节点的列表,然后它会遍历每个节点,直到找到正确的节点。这将非常缓慢且效率低下。因此,如果您通常必须按某个 属性 key/value 查找节点,您将需要一个索引。首先不是要使查找成为可能,而是要使其高效。
我想通过 neo4j 的嵌入式 java 框架检索具有特定标签(或标签集)或属性(或属性集)的节点或节点列表。
看这个问题:Select a node by name in NEO4J in Java
如果您想搜索具有特定属性或标签的节点,看来您必须创建索引。但是,如果我编写自己的密码命令来执行相同的操作,则不必创建索引,我只需执行一个简单的查询即可:
Match (n:Entity:Person) return n;
我将简单地获取具有该标签组合的节点列表。如果每次都创建索引,这在嵌入式 Java 中不容易做到吗?
如果您的节点上有标签,就像您的查询所建议的那样,那么有一个简单的方法可以 GraphDatabaseService#getNodesByLabelAndProperty(Label label, String key, Object value)
所以是的,你可以做到。
尽管如此,仍建议使用索引。问问自己,如果没有索引,数据库将如何执行此操作?好吧,它可能会拉出一个以您指定的方式标记的所有节点的列表,然后它会遍历每个节点,直到找到正确的节点。这将非常缓慢且效率低下。因此,如果您通常必须按某个 属性 key/value 查找节点,您将需要一个索引。首先不是要使查找成为可能,而是要使其高效。