graph - 如何在 Cypher 中使用关系索引

标签 graph neo4j cypher

我正在使用 neo4j 2.1.4。
我有节点 - POINT 和关系 - ROAD
我有 ROAD 属性的索引 - OBJ_COD

:schema ls -l :ROAD

Indexes
  ON :ROAD(OBJ_COD) ONLINE  
  ON :ROAD(ID)      ONLINE  

No constraints

我想通过 OBJ_COD 值搜索 ROAD,但密码不使用索引来查找关系。
neo4j-sh (?)$ profile MATCH (a)-[r:`ROAD` {ID:333275}]-(b:`POINT`) RETURN r LIMIT 1; 

ColumnFilter
   |
  +TraversalMatcher

+------------------+------+---------+-------------+----------------+
|         Operator | Rows |  DbHits | Identifiers |          Other |
+------------------+------+---------+-------------+----------------+
|     ColumnFilter |    2 |       0 |             | keep columns r |
| TraversalMatcher |    2 | 2265843 |             |        a, r, a |
+------------------+------+---------+-------------+----------------+

如何强制密码使用现有索引来搜索单个关系?

最佳答案

模式索引仅在节点上可用。对关系建立索引的需求几乎总是揭示图形数据建模中的一个问题。通常,您使用索引来查找图遍历的起点。良好的建模实践是,您域中的任何内容都是 thingentity应该是节点和关系把你的things进入语义上下文。如果您按照此操作并且您的查询从 something 开始不需要索引关系。

然而,在一些罕见的情况下,关系索引可能是一个有效的选择。在这种情况下,您需要回退以使用旧索引来建立关系。查看 fine documentation以便了解它们是如何工作的。

关于graph - 如何在 Cypher 中使用关系索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25871820/

相关文章:

data-structures - 如何最好地表示 3D 欧几里得空间中的网格图?

graph - MSAGL:更新可见图(添加边)

neo4j - AND 运算符不适用于 Neo4j 中的 type(r)

java - 在 Java 的 Cypher 查询中指定参数

algorithm - Python 中的邻接集表示

c++ - 实现加权图的问题[c++]

Neo4j Spatial 'WithinDistance' Cypher 查询返回空,而 REST 调用返回数据

c# - 如何使用 .Net neo4j 客户端获取属性的 sum()?

neo4j - 了解 Neo4j Cypher Profile 关键字和执行计划

Neo4j:与深度关系的条件