我正在多次查询neo4j的自动索引,尝试通过属性 ID 检索节点。它在大多数情况下运行良好,但如果我的查询包含 lucene特殊字符(+ - && ||!(){} [] ^“〜*?:)我得到一个ParseException的。
我尝试使用以下代码解析查询字符串(如建议的here):
String escapeChars ="[\\\\+\\-\\!\\(\\)\\:\\^\\]\\{\\}\\~\\*\\?]";
String escaped = userInput.replaceAll(escapeChars, "\\\\$0");
因此,索引查询返回null。
我做错了吗?是否有更好的方法来逃避这些角色?
编辑:
我也尝试过使用Lucene的QueryParser.escape(query)
方法而没有运气。
答案 0 :(得分:2)
如果可以的话,可能更容易将它放在引号中(并且双引号在它们前面需要\\
,无论如何)。
id:"my_id_with*123y47123&"