2012-04-02 7 views
3

websolrが検索 " - " これまでに検索しようとしたとき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を使用しようとしましたが、これらの文字にエスケープしません。

答えて

2

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

通常、文書のインデックスを作成するとき、トークン化ツールは自分自身でダッシュ文字を削除します。そのため、ダッシュを無視することを意味する場合を除き、ダッシュを削除することができます。

フルのSolrクエリー構文はここにある:http://wiki.apache.org/solr/SolrQuerySyntax

2

クリスが正しく指摘すると、あなたはバックスラッシュをエスケープする必要があります。

使用しているクエリパーサーによっては、意味を持つ特殊文字がいくつかあります。あなたは彼らの完全な意味をLucene query parser syntaxのためのドキュメントを参照してください

:この記事の執筆時点で、Luceneの(したがって、Solrの)クエリーパーサーは、これらの文字に特別な意味を割り当てます。デフォルトのSolrクエリーパーサーは、SolrQueryParser wikiページで説明されているように、Luceneクエリーパーサー構文のスーパーセットを提供します。

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

関連する問題