2015-11-02 86 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作为比较我的查询的基准,(它似乎只是引起我的问​​题的加号) –

相关问题