做站内搜索时,如果输入的参数中包含英文冒号、双引号或其他具有特殊含义的字符时,可能需要做转义来避免查不到数据的问题。
测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7
异常信息:
如本站内有一篇文章标题为:
java.lang.NumberFormatException: For input string: "MA147LL/A"
直接拿到搜索框搜反而出不来结果。
解决方法:
在搜索的action中将输入的参数(kw为keywords的缩写)做转义处理,即
import org.apache.solr.client.solrj.util.ClientUtils;
String escapedKw = ClientUtils.escapeQueryChars(kw);
然后拿转义后的escapedKw去solr中查询,用户输入的参数kw的值不变用于回显到搜索框中。
相关信息:
solr特殊字符包含如下
+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \
如过此内容对您有帮助,欢迎以点击广告的形式来支持我们,但请每天不要多于一次,否则可能被识别恶意点击,导致封号。
转载:http://www.devnote.cn/article/80.html