cfsearch - 执行查询时出错:org.apache.lucene.queryParser.ParseException:无法解析:词法错误

时间:2016-01-08 13:35:28

标签: coldfusion lucene cfsearch

我有一个基本的cfsearch工作正常,但偶尔它可以用如下搜索字符串打破;

  • 我的搜索字符串]

  • “我的搜索字符串

  • 我的搜索字符串[

  • 我的搜索:字符串

以上任何一种都会导致错误,如

  

执行查询时出错:org.apache.lucene.queryParser.ParseException:无法解析'“我的搜索字符串”:第1行第32列的词汇错误。遇到:之后:“\”我的搜索字符串“

我以为我可以去除那些角色,但你可能有一个有效的搜索词,比方说,两个“” - 即。 “我的搜索字符串” - 这是有效的。有没有更好的方法为cfsearch准备字符串?

所以,在以下例子中:

  

“我的搜索字符串

它会删除第一个“。但如果搜索词是:

  

“我的搜索字符串”

一切都很好 - 别管它了。有任何想法吗?!是否还有其他可能导致错误的字符?例如,黑客试过这个;

  

XyOk, '](。]]]'

导致错误。

1 个答案:

答案 0 :(得分:3)

使用VerityClean UDF中的CFLib来清理Verity / Lucene搜索参数。 (注意:将:^*添加到竖线分隔的reBadChars变量中,以便它们将被剥离以用于Lucene。)

http://www.cflib.org/udf/verityClean