2015-11-02 80 views
1

所以這個查詢是什麼在Lucene的查詢語法和和+的區別

http://jthinkws.elasticbeanstalk.com/?type=release&query=artist:(Dinosaur~0.7和小)和(+聲道:「算了天鵝」 +曲目:「宛若天成」)和軌道: 2 TO 100]和src:1個&限= 100 &偏移= 0

給出35分的結果,而

http://jthinkws.elasticbeanstalk.com/?type=release&query=artist:(Dinosaur~0.7與小)AND(軌道: 「忘記天鵝」,以及軌道:「就像天「)AND曲目:[2 TO 100] AND src:1 & limit = 100 & offset = 0

給出2結果。

看來,在第一種情況下,它返回跟蹤字段匹配「忘記天鵝」或「只是天堂」的文檔,而第二個僅在跟蹤字段匹配時才返回,因此第一個查詢的行爲如同在兩個軌道參數之間有一個隱式OR,如下所示:

http://jthinkws.elasticbeanstalk.com/?type=release&query=artist:(Dinosaur~0.7 AND Jr.)AND(+ track:「忘記天鵝」OR +軌道:「就像天堂」)和軌道:[2到100] AND src:1 & limit = 100 & offset = 0

但是,如果是這樣的話,+操作符的意義何在?

更新: 林現在想知道的問題是關係到事實查詢是通過因特網,以及是否取得了「+」被正確編碼

回答

1

你是對的,大約需要逃離「 +「在URL中。就Lucene語法而言,x AND y被查詢解析​​器解釋爲+x +y,因此根據定義它們是相同的。

嘗試%2B替換加分:

http://jthinkws.elasticbeanstalk.com/?type=release&query=artist:(Dinosaur~0.7%20AND%20Jr.)%20AND%20(%2Btrack:%22Forget%20The%20Swan%22%20%2Btrack:%22Just%20Like%20Heaven%22%20)%20AND%20tracks:[2%20TO%20100]%20AND%20src:1&limit=100&offset=0

+0

右鍵THX的作品,但我也有點困惑。我原來的問題是,由我的服務器編碼的查詢沒有得到與查詢放入Firefox瀏覽器並由Firefox編碼相同的結果。我假設我的代碼是錯誤的,但現在看來,Firefox是錯的 - 評論http://stackoverflow.com/questions/33476604/what-is-the-reason-for-the-difference-between-these-two-urlencodings-of -url –

+0

@PaulTaylor - 我不會說Firefox是錯的,真的。不幸的是,火狐瀏覽器還沒有配備閱讀技術(還沒有),所以不能期望這個*加*應該是字面加號,而不是通常的逃脫空間。 [查看更多關於如何在這裏處理加號的符號](http://stackoverflow.com/questions/1005676/urls-and-plus-signs)。 – femtoRgon

+0

right gotcha so so really我錯誤地使用Firefox作爲比較我的查詢的基準,(它似乎只是引起我的問​​題的加號) –

相關問題