有一個「#」字符在我的查詢鍵存在如下圖所示:http://10.251.25.12:8080/commentindex/comment/select?q=17\#30\#36\#94\#35&rows=200&wt=json
:有特殊的字符Solr的查詢
17\#30\#36\#94\#35
所以查詢網址會產生。你可以看到,由於'#'發送到服務器之前,URL將被截斷,並且我將得到錯誤結果,錯誤行數,錯誤文檔類型(不是我設置的JSON)。
對於上面的實例,我編碼的網址爲http://10.251.25.12:8080/commentindex/comment/select?q=17%5c%2330%5c%2336%5c%2394%5c%2335&rows=200&wt=json
。一切都如我所料。但是,我遇到了另外一個錯誤,如果查詢鍵看起來像:
http://10.251.25.12:8080/commentindex/comment/select?q=%e2%86%90%5c%7e%5c%5c(%e2%89%a7%e2%96%bd%e2%89%a6%5c)%5c%2f%5c%7e%ef%bc%81%ef%bc%81%7c&rows=200&wt=json
你覺得括號:
←\~\\(≧▽≦\)\/\~!!|
網址會生成?這是solr查詢中的特殊字符! 400個不好的請求我會從網址中獲得。
我注意到所有的查詢鍵都被'\'轉義了,所以如果我不應該編碼整個url並且只編碼'#'char?我還有其他特殊字符嗎?
不要忘記,從Lucene 4.0開始「/」也是一個特殊字符(在正則表達式中使用)。 – 2014-05-22 15:45:15