3

websolrが戻ってきました

 RSolr::Error::Http - 400 Bad Request
Error: <html><head><title>Apache Tomcat/6.0.28 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 400 - org.apache.lucene.queryParser.ParseException: Cannot parse '----': Encountered &quot; &quot;-&quot; &quot;- &quot;&quot; at line 1, column 1.
Was expecting one of:
   &quot;(&quot; ...
   &quot;*&quot; ...
   <QUOTED> ...
   <TERM> ...
   <PREFIXTERM> ...
   <WILDTERM> ...
   &quot;[&quot; ...
   &quot;{&quot; ...
   <NUMBER> ...

「-」文字を検索しようとしたとき。

「:」などの他の特殊文字は正常に機能します。CGI.escapeを使用しようとしましたが、これらの文字にエスケープされません。

4

2 に答える 2

2

バックスラッシュでエスケープしてみましたか?

通常、ドキュメントにインデックスを付けると、トークナイザーはダッシュ文字を自動的に削除するため、否定的なクエリである場合を除いて、とにかくダッシュを削除することをお勧めします。

完全なSolrクエリ構文はここにあります: http ://wiki.apache.org/solr/SolrQuerySyntax

于 2012-04-03T06:48:48.160 に答える
2

クリスが正しく指摘しているように、バックスラッシュをエスケープする必要があります。

使用しているクエリパーサーに応じて、意味のある特殊文字がいくつかあります。この記事の執筆時点で、Lucene(したがってSolr)クエリパーサーはこれらの文字に特別な意味を割り当てています。

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

完全な意味については、 Luceneクエリパーサー構文のドキュメントを参照してください。デフォルトのSolrクエリパーサーは、 SolrQueryParser wikiページで説明されているように、Luceneクエリパーサー構文のスーパーセットを提供します。

エスケープすることを心配したくない場合は、DisMaxクエリパーサーは、ユーザーが検索ボックスに入力する可能性のあるものに近い入力を受け入れるように設計されています。私は最近それに対してさまざまなスペシャルをテストしていませんが、原則として、それが受け入れる入力ではおそらくより優雅です。

于 2012-04-26T17:32:59.230 に答える