所有节点上的密码索引通用 属性
cypher indexing common property on all nodes
根据新的索引规则,auto_index
将在未来消失,预计将使用 cypher
创建索引。根据这种新方法,要索引节点 属性,您必须提供节点标签。
我在所有类型的节点标签上都有一个 'nodeId' 属性 - 用户、员工、银行、汽车等。 我过去常常自动-index this 属性 检索任何类型的节点,如果它的 nodeId 是已知的。请注意,由于自动索引不需要我提供节点标签,因此我可以做我所做的事情。
ReadableIndex<Node> readableIndex = this.graphDatabaseService.index().getNodeAutoIndexer().getAutoIndex();
readableIndex.get("nodeId", "0").getSingle();
但是对于新样式,我必须为每个节点标签在 nodeId 属性 上创建索引。所以我必须这样做:
create index on :User(nodeId)
create index on :Employee(nodeId)
...
此外,我的方法 getByNodeId(String nodeId)
现在没用了,因为我没有传递任何节点标签,这个密码查询恕我直言将无法再使用索引。
match (node) where node.nodeId = {nodeId} return node;
由于我的 getByNodeId()
方法的全部要点是在所有节点上通用,所以我不能给这个密码查询一个节点标签。那我在这里应该怎么办。我的 2 个问题是:
- 我如何通过密码告诉 neo4j 在所有节点标签上建立索引
- 如何编写密码查询,它使用的索引不是基于节点标签,而是基于节点 属性。
注:
我用的是neo4j,所以用cypher是必不可少的-jdbc
他们没有办法创建自动索引或访问
自动索引器(至少我不知道)。
有些人可能会建议我更改 neo4j.properties 以启用
在那里自动索引,但我不喜欢更改配置文件。我
想在我的程序中这样做。无论如何,那只会解决
首要问题。第二期还在。
一个节点可以有多个标签。
因此,如果您让所有节点共享一个公共标签,比如 Base
(除了它们当前拥有的任何标签),您可以只拥有一个覆盖所有节点的索引:
CREATE INDEX ON :Base(nodeId)
根据新的索引规则,auto_index
将在未来消失,预计将使用 cypher
创建索引。根据这种新方法,要索引节点 属性,您必须提供节点标签。
我在所有类型的节点标签上都有一个 'nodeId' 属性 - 用户、员工、银行、汽车等。 我过去常常自动-index this 属性 检索任何类型的节点,如果它的 nodeId 是已知的。请注意,由于自动索引不需要我提供节点标签,因此我可以做我所做的事情。
ReadableIndex<Node> readableIndex = this.graphDatabaseService.index().getNodeAutoIndexer().getAutoIndex();
readableIndex.get("nodeId", "0").getSingle();
但是对于新样式,我必须为每个节点标签在 nodeId 属性 上创建索引。所以我必须这样做:
create index on :User(nodeId)
create index on :Employee(nodeId)
...
此外,我的方法 getByNodeId(String nodeId)
现在没用了,因为我没有传递任何节点标签,这个密码查询恕我直言将无法再使用索引。
match (node) where node.nodeId = {nodeId} return node;
由于我的 getByNodeId()
方法的全部要点是在所有节点上通用,所以我不能给这个密码查询一个节点标签。那我在这里应该怎么办。我的 2 个问题是:
- 我如何通过密码告诉 neo4j 在所有节点标签上建立索引
- 如何编写密码查询,它使用的索引不是基于节点标签,而是基于节点 属性。
注:
我用的是neo4j,所以用cypher是必不可少的-jdbc 他们没有办法创建自动索引或访问 自动索引器(至少我不知道)。
有些人可能会建议我更改 neo4j.properties 以启用 在那里自动索引,但我不喜欢更改配置文件。我 想在我的程序中这样做。无论如何,那只会解决 首要问题。第二期还在。
一个节点可以有多个标签。
因此,如果您让所有节点共享一个公共标签,比如 Base
(除了它们当前拥有的任何标签),您可以只拥有一个覆盖所有节点的索引:
CREATE INDEX ON :Base(nodeId)