【问题标题】:cfsearch - Error executing query : org.apache.lucene.queryParser.ParseException: Cannot parse : Lexical errorcfsearch - 执行查询时出错:org.apache.lucene.queryParser.ParseException:无法解析:词法错误
【发布时间】:2016-04-13 05:08:05
【问题描述】:

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

  • 我的搜索字符串]

  • "我的搜索字符串

  • 我的搜索字符串[

  • 我的搜索:字符串

以上任何一种都会导致类似的错误;

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

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

因此,在以下示例中:

"我的搜索字符串

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

“我的搜索字符串”

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

XyOk,'.](.]]]'

导致错误的原因。

【问题讨论】:

标签: coldfusion lucene cfsearch


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多