Cypher:如何在浏览器中优化搜索(可能使用参数)

时间:2018-11-15 08:54:09

标签: neo4j

好,我必须运行以下查询(在Docker上为Neo4j Commed。3.0.12版)

注意的是,日历名称的格式未知:
    1)名字+“” +姓氏+“-” +专业化
    2)姓氏+“” +姓氏+“-” +专业化

:PARAM name: "Di Pietro Chiara - Gynecologist"     

MERGE (_200:`person` {`lastname`: "Di Pietro", `firstname`: "Chiara", `birthdate`: "1984/03/25"})

MERGE (_cal_445:`calendar` { :`X-VR-CALNAME` = $name })-[:`belongs_to a`]-(_per_445:`person`) 
WHERE $name = _per_445.firstname + " " + _per_445.lastname
   OR $name = (_per_445.nome + " " + _per_445.cognome)
RETURN _cal_445, _per_445

查询和一些其他变体无法运行。有时返回错误,有时破坏屏幕上的浏览器布局,

当然有什么问题,但是我找不到并纠正。 面对两种倒置格式的部分:如何进行优化? 为什么PARAM声明会产生错误?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这部分查询无效:

MERGE (_cal_445:`calendar` { :`X-VR-CALNAME` = $name })

您应该将其替换为:

MERGE (_cal_445:`calendar` { `:X-VR-CALNAME`:$name }) 

此外,您正在使用MERGE子句中的值$name进行WHERE。只是不允许...

如果您将匹配项替换为匹配项,则查询将起作用:

MERGE (_200:`person` {`lastname`: "Di Pietro", `firstname`: "Chiara", `birthdate`: "1984/03/25"})
WITH _200
MATCH (_cal_445:`calendar` { `:X-VR-CALNAME`: $name })-[:`belongs_to a`]-(_per_445:`person`) 

WHERE $name = _per_445.firstname + " " + _per_445.lastname
   OR $name = (_per_445.nome + " " + _per_445.cognome)

RETURN _cal_445, _per_445