Я работаю над проектом, целью которого является создание системы для извлечения биомедицинской информации (например, биомедицинских объектов, таких как наркотики, болезни и гены, а также взаимоотношения между ними). Когда я попытался получить базу данных, чтобы найти конкретное заболевание, используя оператор cypher:Neo4j: неверный ввод в cypher
Для cypher string "MATCH (m: Disease) WHERE m.disease_name = ~ '(? I)" + disease + "' RETURN m" ;
если болезнь с названием «2'-бензоилоксициннальдегид» или «4- [1-ALLYL-7- (TRIFLUOROMETHYL) -1H-INDAZOL-3-YL] BENZENE-1,3-DIOL», исключения произойдет с сообщениями следующим образом:
Недопустимый ввод '' ': ожидается 0..9,'. ',' e ',' E ', символ идентификатора, пробелы, метки узлов,' [', "= ~ ", IN, STARTS, ENDS, CONTAINS, IS, '^', '*', '/', '%', '+', '-', '='," <> ","! = " , '<', '>', "< =", "> =", AND, XOR, OR, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, RETURN, UNION, ';' или конец ввода (строка 1, столбец 53 (смещение: 52)) «MATCH (n1: Drug) - [x] - (n2: Disease) RETURN n1 LIMIT 25" "
Как я могу исправить эту проблему ? Спасибо огромное!
Я хотел бы предложить использовать параметры MATCH (м: Disease), где М.disease_name = ~ {diseaseName} RETURN m $ params ['diseaseName'] = '(? i)'. $ diseaseName; , а затем передать этот параметр в запрос cypher, потому что, если мы используем params, тогда сиггер-синтаксис не видит их – user3542450
Это просто на догадку: вы также можете попытаться заменить болезнь tostring (болезнь) в вас cypher query – manonthemat
Похоже, у вас есть странная цитата, которая попадает в запрос ... Я бы предположил, кстати, использование параметров Cypher, если есть вероятность, что переменная «болезнь» может возникнуть из ненадежного источника. Это также может повысить производительность запросов. http://neo4j.com/docs/stable/cypher-parameters.html –