Cypher: как оптимизировать поиск в браузере (возможно, с использованием параметров) - PullRequest
0 голосов
/ 15 ноября 2018

Ну, мне нужно выполнить следующий запрос (Neo4j comm. Ed. 3.0.12 на Docker)

предостережение в том, что имя календаря имеет неизвестный формат:
1) firstname + ""+ фамилия + "-" + специализация
2) фамилия + "" + firstname + "-" + специализация

: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 голосов
/ 15 ноября 2018

Эта часть вашего запроса недействительна:

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

Вы должны заменить его следующим:

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

Более того, вы делаете MERGE со значением $name, которое также находится на WHERE cluse. Это просто не разрешено ...

Если вы заменяете слияние на совпадение, ваш запрос будет работать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...