5

neo4j 版本 2.3.1

索引存在于Stoptime.stop_sequence和上Stoptime.keyStoptime.stop_sequence是数字。

图形:

(Stoptime)-[:PART_OF]->(Trip)

陈述:

//USING PERIODIC COMMIT 1000
PROFILE
load csv with headers from "file:///path/to/csv" as csv with csv limit 0
match (s1:Stoptime{key:(csv.trip_id + csv.stop_id)})-[:PART_OF]->(trip:Trip), (s2:Stoptime)-[:PART_OF]->(trip)
where s2.stop_sequence = s1.stop_sequence + 1
create (s1)-[:PRECEDES]->(s2);

生成的配置文件如下所示:

+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| Operator              | Rows | DB Hits | Identifiers                                        | Other                                                                                                             |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +EmptyResult          |    0 |       0 |                                                    |                                                                                                                   |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +UpdateGraph          |    0 |       0 | anon[188], anon[227], anon[311], csv, s1, s2, trip | CreateRelationship                                                                                                |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Eager                |    0 |       0 | anon[188], anon[227], csv, s1, s2, trip            |                                                                                                                   |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Filter               |    0 |       0 | anon[188], anon[227], csv, s1, s2, trip            | Ands(trip:Trip, s2:Stoptime, s2.stop_sequence == Add(s1.stop_sequence,{  AUTOINT0}), NOT(anon[188] == anon[227])) |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SimplePatternMatcher |    0 |       0 | anon[188], anon[227], csv, s1, s2, trip            |                                                                                                                   |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SchemaIndex          |    0 |       0 | csv, s1                                            | Add(csv.trip_id,csv.stop_id); :Stoptime(key)                                                                      |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Slice                |    0 |       0 | csv                                                | Literal(0)                                                                                                        |
| |                     +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +LoadCSV              |    1 |       0 | csv                                                |                                                                                                                   |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+

在这种情况下,如何将 MATCH + WHERE 与 CREATE 分开以删除 EAGER?

PRECEDES在将预先构建的关系填充到图表中之前,我唯一的方法是将 CSV 预处理成一个新的,其中定义了关系吗?或者有什么方法可以用更好的 MATCH 建立连续的关系。

4

1 回答 1

0

Cypher 3.x 不再有这个问题。(如果你在 Cypher 2.3 兼容模式下运行,它不会消失)

所以任何遇到这个问题的人,我建议升级到最新版本的 Neo4j。

于 2018-11-08T15:22:54.970 回答