Solrの特殊文字エスケープ処理


サイト内検索で、入力したパラメータに英語のコロン、二重引用符、または他の特殊な意味を持つ文字が含まれている場合は、データが見つからない問題を回避するためにエスケープする必要がある場合があります.
テスト対象:
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