我有一个基本的cfsearch工作正常,但偶尔它可以用如下搜索字符串打破;
我的搜索字符串]
“我的搜索字符串
我的搜索字符串[
我的搜索:字符串
以上任何一种都会导致错误,如
执行查询时出错:org.apache.lucene.queryParser.ParseException:无法解析'“我的搜索字符串”:第1行第32列的词汇错误。遇到:之后:“\”我的搜索字符串“
我以为我可以去除那些角色,但你可能有一个有效的搜索词,比方说,两个“” - 即。 “我的搜索字符串” - 这是有效的。有没有更好的方法为cfsearch准备字符串?
所以,在以下例子中:
“我的搜索字符串
它会删除第一个“。但如果搜索词是:
一切都很好 - 别管它了。有任何想法吗?!是否还有其他可能导致错误的字符?例如,黑客试过这个;“我的搜索字符串”
XyOk, '](。]]]'
导致错误。
答案 0 :(得分:3)
使用VerityClean UDF中的CFLib来清理Verity / Lucene搜索参数。 (注意:将:
,^
和*
添加到竖线分隔的reBadChars
变量中,以便它们将被剥离以用于Lucene。)