我正在使用QueryParser::parse()
方法从ZendSearch Lucene索引的字符串搜索词中获取查询。但是我对以下查询有疑问:
+php +5.7.1)
这会抛出QueryParserException
消息:
语法错误:括号不匹配,每个开口都必须关闭。
所以我在将QueryParser::escape()
传递给QueryParser::parse()
之前使用\\+\\p\\h\\p\\ \\+\\5\\.\\7\\.\\1\\)
来转义字符串搜索字词,但之后它会逃避所有内容,因此会导致此字符串:
QueryParserException
现在+
已经消失,但也有可能使用-
,QueryParserException
等特殊字符。
我寻找一种方法来逃避导致)
的特殊字符,因此在我的情况下,)
应该被转义,因为查询中没有左括号+
但我的两个QueryParser::suppressQueryParsingExceptions()
应该保持不变。
是否有可能实现这一目标?不进行解析而构建查询本身不是一种选择,因为搜索项是用户输入。
我尝试使用QueryParser
这可能是我正在寻找的东西,但它没有效果。 QueryParserException
仍会引发true
,但默认值为{{1}}。