solr系统query检索词特殊字符的处理
来源:互联网 发布:java移植安卓 编辑:程序博客网 时间:2024/04/30 22:17
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.java
- public 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 re
- def 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 特殊字符的处理
- 用户态以及内核态
- 特殊字符搜索
- MapServer 之 发布网络地图服务(WMS-Web Map Service)
- 简单的手电筒程序(基于系统驱动节点)
- 一种基于“哨兵”的分布式缓存设计
- solr系统query检索词特殊字符的处理
- Cannot find the declaration of element 'beans'
- 多线程就这么简单 python版
- 【互联网+】电子商务秘诀
- ubuntu有效的sourcelist配置
- win7 手把手教你将win7背景色修改为浅绿保护色【包括资源管理器的背景】
- 大话设计模式C++版——工厂模式在COM中的典型应用
- 用Curl测试POST
- 重识外观模式