2017-02-27 91 views
1

我注意到了ravendb的python客戶端的一個奇怪的解析問題。 當我使用這個查詢pyravendb查詢參數解析錯誤

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

知道url = "http://www.mywebsite.net/"

錯誤堆棧的培訓相關部分如下:

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/' ---> 

,但如果我只需要添加一個簡單' '到URL參數在查詢中,它的工作原理沒有任何解析錯誤(但由於語法不一樣,dosent會返回結果)。

我想爲github上的pyravendb做出貢獻,但我不確定它在解析參數的位置,因此可能會調用lucene

任何想法爲什麼簡單的空間可以防止正確的解析?

回答

3

您發送Lucene的查詢是這樣的url:http://www.mywebsite.net/

Lucene的關鍵將是url和假設是http://www.mywebsite.net/ 因爲你:http://www.mywebsite.net/ Lucene的分析器得到「混亂」,提高分析錯誤的值。 (分鍵,值特殊字符是:

要解決你的問題,你需要躲避:在你的URL參數,然後把它交給查詢,以便您的網址參數應該是這樣的: http\://www.mywebsite.net/

對於你的問題,爲什麼簡單的空間會妨礙正常的解析是因爲Lucene的空間指示有關的另一個參數來尋找。 (你可以看到我們建立什麼查詢時使用where_in方法你)

這個問題將在pyravendb的下一個版本(當前版本爲1.3.1.1)

+0

這就是我所做的。我將用它作爲一個臨時的解決辦法,直到下一個pyravendb推到點子:)快樂(種)有助於在烏鴉固定「錯誤」!謝謝 ! – Neil

+1

我修復了它,你可以更新你的pyravendb。 只是不要忘記刪除逃逸 –