Github user anujgandharv commented on a diff in the pull request:
https://github.com/apache/jena/pull/406#discussion_r183642709
--- Diff:
jena-text-es/src/main/java/org/apache/jena/query/text/es/TextIndexES.java ---
@@ -422,6 +422,27 @@ public EntityDefinition getDocDef() {
}
private String parse(String fieldName, String qs, String lang) {
+ //Escape special characters if any in the query string
+ qs = qs.replaceAll("\\:", "\\\\:")
+ .replaceAll("\\+", "\\\\+")
+ .replaceAll("\\-", "\\\\-")
+ .replaceAll("\\=", "\\\\=")
+ .replaceAll("\\&", "\\\\&")
+ .replaceAll("\\|", "\\\\|")
+ .replaceAll("\\>", "\\\\>")
+ .replaceAll("\\<", "\\\\<")
+ .replaceAll("\\!", "\\\\!")
+ .replaceAll("\\(", "\\\\(")
+ .replaceAll("\\)", "\\\\)")
+ .replaceAll("\\{", "\\\\{")
+ .replaceAll("\\}", "\\\\}")
+ .replaceAll("\\]", "\\\\]")
+ .replaceAll("\\[", "\\\\[")
+ .replaceAll("\\^", "\\\\^")
+ .replaceAll("\\~", "\\\\~")
+ .replaceAll("\\?", "\\\\?");
+
--- End diff --
So, what i understand is that backslashes need to be escaped even before
they reach the Jena ES query method, just like double quotes. Therefore i
haven't added the check for it. I can add a unit test depicting the escaping of
backslash in the query string itself. Let me know if that would help.
---