solr系统query检索词特殊字符的处理
来源:互联网 发布:照片台历制作软件 编辑:程序博客网 时间:2024/05/18 01:19
solr是基于 lucence开发的应用,如果query中带有非法字符串,结果很可能是检索出所有内容或者直接报错,所以你对用户的输入必须要先做处理。输入星号,能够检索出所有内容;输入加号,则会报错。
官方的处理办法(java,因为solr是java开发的):
https://svn.apache.org/repos/asf/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.javapublic static String escapeQueryChars(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); // These characters are part of the query syntax and must be escaped if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')' || c == ':' || c == '^' || c == '[' || c == ']' || c == '\"' || c == '{' || c == '}' || c == '~' || c == '*' || c == '?' || c == '|' || c == '&' || c == ';' || c == '/' || Character.isWhitespace(c)) { sb.append('\\'); } sb.append(c); } return sb.toString(); }
翻译的php版本(利用preg_replace函数进行正则替换):
static public function escape($value){ //list taken from http://lucene.apache.org/java/docs/queryparsersyntax.html#Escaping%20Special%20Characters $pattern = '/(\+|-|&|\||!|\(|\)|\{|}|\[|]|\^|"|~|\*|\?|:|;|~|\/)/'; $replace = '\\\$1'; return preg_replace($pattern, $replace, $value);}
翻译后的python版本:
import redef escape_solr(word): return re.sub('(\\\|\+|-|&|\|\||!|\(|\)|\{|}|\[|]|\^|"|~|\*|\?|:|;|/|\~)','\\\1', word )
0 0
- solr系统query检索词特殊字符的处理
- solr系统query检索词特殊字符的处理
- solr系统query检索词特殊字符的处理
- Solr特殊字符处理
- 检索/查询时特殊字符的处理
- Solr特殊字符转义处理
- solr特殊字符转义处理
- Solr-----12、Solr特殊字符处理
- es检索时,出现特殊字符的处理方式
- Solr之特殊字符转义处理
- ElasticSearch检索时特殊字符处理
- 特殊字符的处理
- 特殊字符的处理
- 特殊字符的处理
- 特殊字符‘&’的处理
- SQL Server检索条件中含有特殊的字符的处理
- [系统] Solr 介绍以及 XML 中特殊字符 Unicode 编码
- XML 特殊字符的处理
- 讨好他人的时代过去了,靠魅力吸引他人的时代开始了!
- 使用ByteArray向PHP后台传输wav音频数据
- Activiti工作流委托功能
- red5源码分析
- 正则表达式举例(上)
- solr系统query检索词特殊字符的处理
- Lua中的基本函数库
- 关系型到文档型的跨越----颠覆你对数据库数据模型的认识
- Axiom3D写游戏:第一个窗口
- 安装OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 开发环境配置
- 正则表达式举例(下)
- VS2010环境下MFC使用DataGrid绑定数据源
- 系统分析工具——数据流图
- 计算地球上两经纬度点 A B 间距离