Я собираюсь использовать явные / ручные индексные запросы Neo4j, что-то вроде этого:
MATCH (d:Decision)-[:HAS_VALUE_ON]->(ch:Characteristic)
WHERE ch.id = 2
CALL apoc.index.in(ch,'HAS_VALUE_ON','property.1.4:5 AND property.1.3:"practical"') YIELD node AS decision
MATCH (decision)-[ru:CREATED_BY]->(u:User)
RETURN decision, u
Чтобы использовать его, мне нужно создать предикат запроса индекса, например, на основе языка запросов Lucene.как в следующем примере:
'property.1.4:5 AND property.1.3:"practical"'
Согласно моей бизнес-логике, значения внутри предиката происходят из пользовательского интерфейса и потенциально могут использоваться для инъекций Cypher (SQL).
Ранее я использовал именованные параметры Cypher, чтобы избежать этой проблемы, но похоже, что она не работает внутри строки предиката.
Как с этим справиться в случае явного / ручного индексного предиката Lucene запроса?