1

我有一个基本的 cfsearch 可以正常工作,但有时它可能会被如下搜索字符串破坏;

  • 我的搜索字符串]

  • “我的搜索字符串

  • 我的搜索字符串[

  • 我的搜索:字符串

以上任何一项都会导致错误,例如;

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

我在想我可以去掉这些字符,但你可能有一个有效的搜索词,比如两个“” - 即。“我的搜索字符串” - 这是有效的。有没有更好的方法来为 cfsearch 准备一个字符串?

因此,在以下示例中:

“我的搜索字符串

它会去掉第一个“。但如果搜索词是:

“我的搜索字符串”

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

XyOk,'.](.]]]'

这导致了一个错误。

4

1 回答 1

3

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

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

于 2016-01-08T16:40:43.057 回答