1

以下のように、クエリキーに「#」文字が存在します。

17\#30\#36\#94\#35

したがって、クエリURLは次のように生成されますhttp://10.251.25.12:8080/commentindex/comment/select?q=17\#30\#36\#94\#35&rows=200&wt=json。ご覧のとおり、「#」が存在するため、URLはサーバーに送信する前に切り捨てられ、エラー結果、エラー行数、エラードキュメントタイプ(設定したjsonではない)が表示されます。

上記の例では、URLをとしてエンコードしましたhttp://10.251.25.12:8080/commentindex/comment/select?q=17%5c%2330%5c%2336%5c%2394%5c%2335&rows=200&wt=json。すべてが私の期待どおりに進みます。ただし、クエリキーが次のようになっていると、別のエラーが発生します。

←\~\\(≧▽≦\)\/\~!!|

URLは次のように生成されます。

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から取得します。

すべてのクエリキーが「\」でエスケープされていることに気づきました。したがって、URL全体をエンコードせず、「#」文字のみをエンコードする必要がある場合はどうでしょうか。他に注意すべき特別な文字はありますか?

4

1 に答える 1

3

Lucene/Solr の特殊文字は次のとおりです。

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

もちろん、#そのような文字は URL で特別な意味を持ちます。上記のリテラル文字を検索する場合は、エスケープする必要があります。このリストはhttp://lucene.apache.org/core/3_6_0/queryparsersyntax.html#Escaping%20Special%20Charactersからのものです。

于 2012-07-23T06:02:42.960 に答える