2017-02-27 2 views
1

私はravendbのpythonクライアントで奇妙な解析の問題に気付きました。 私は、エラー・スタックのurl = "http://www.mywebsite.net/"pyravendbクエリパラメータの解析エラー

relevent一部は以下であることを知って、このクエリ

query_result = list(session.query().where_equals("url",url).select("Id","htmlCode","url")) 

を使用します。私は単にurlパラメータにシンプル' 'を追加する場合

File "/usr/local/lib/python3.5/dist-packages/pyravendb/store/session_query.py", line 71, in __iter__ 
    return self._execute_query().__iter__() 
    File "/usr/local/lib/python3.5/dist-packages/pyravendb/store/session_query.py", line 307, in _execute_query 
    includes=self.includes) 
    File "/usr/local/lib/python3.5/dist-packages/pyravendb/d_commands/database_commands.py", line 286, in query 
    raise exceptions.ErrorResponseException(response["Error"][:100]) 
pyravendb.custom_exceptions.exceptions.ErrorResponseException: Lucene.Net.QueryParsers.ParseException: Could not parse: 'url:http://www.mywebsite.net/' ---> 

BUTクエリでは、構文解析エラーなしで動作します(しかし、構文は同じではないので、dosentは結果を返します)。

githubでpyravendbに貢献したいと思いますが、パラメータの解析場所はわかりませんが、おそらくluceneが呼び出されています。

シンプルなスペースが適切な解析を妨げる理由は何ですか?

答えて

3

あなたは:http://www.mywebsite.net/でLuceneのパーサが「混乱」と解析エラーを上げる取得しているので、あなたがluceneのに送ったクエリがこのurl:http://www.mywebsite.net/

Luceneのキーはurlhttp://www.mywebsite.net/ すると仮定値になります。 http\://www.mywebsite.net/

あなたがそうあなたのurlパラメータは次のようになります。あなたのURLパラメータで:を脱出し、クエリにそれを与える必要があり、あなたの問題を解決するには(分割キーは、値の特殊文字は:です)

luceneのスペースが探すべき別のパラメータを示しているため、単純なスペースが適切な解析を妨げる理由は何ですか?この問題は、私がやったことだpyravendbの次のバージョン(現在のバージョンは1.3.1.1です)

+0

で修正される予定

を(あなたがwhere_inメソッドを使用するときに我々が構築するものをクエリ見ることができます)。私は次のpyravendbがpipにプッシュされるまで一時的な修正として使用します:) Ravenの "バグ"を修正するのに役立ちます。ありがとうございました ! – Neil

+1

私はそれを修正してpyravendbを更新することができます。 エスケープ処理を削除することを忘れないでください –