Coin163

solr特殊字符转义处理

2014-12-19by admin, 次阅读
solr中的特殊字符包括:
+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \ 
在查询时需要做转义处理,否则查询这些字符会报查询错误。

solr字符转义代码如下:
		/**
		 * Solr字符转义处理,否则查询下列字符会报查询错误。
		 * 特殊字符串:+ – && || ! ( ) { } [ ] ^ ” ~ * ? : \  空格
		 * @param input
		 * @return
		 */
		public static String transformMetachar(String input){
			 StringBuffer sb = new StringBuffer();
			try{
		        String regex = "[+\\-&|!(){}\\[\\]^\"~*?:(\\)\\s]";
		        Pattern pattern = Pattern.compile(regex);
		        Matcher matcher = pattern.matcher(input);
		        while(matcher.find()){
		            matcher.appendReplacement(sb, "\\\\"+matcher.group());
		        }
		        matcher.appendTail(sb);
			} catch(Exception e){
				//TODO
			}
			 return sb.toString(); 
	    }
------分隔线----------------------------