Java 和+之间的区别是什么;在Lucene查询语法中

Java 和+之间的区别是什么;在Lucene查询语法中,java,lucene,Java,Lucene,所以这个查询 和(+音轨:“忘记天鹅”+音轨:“就像天堂一样”)和音轨:[2到100]和src:1&limit=100&offset=0 给出35个结果,而 和(曲目:“忘记天鹅”和曲目:“就像天堂一样”)和曲目:[2到100]和src:1&limit=100&offset=0 给出了2个结果 在第一种情况下,它似乎返回田径场匹配“忘记天鹅”或“只是天堂”的文档,而第二种情况仅在田径场匹配两者时返回,因此第一个查询的作用就像两个田径参数之间存在一个隐式or,如下所示 和(+音轨:“忘记天鹅”或+

所以这个查询

和(+音轨:“忘记天鹅”+音轨:“就像天堂一样”)和音轨:[2到100]和src:1&limit=100&offset=0

给出35个结果,而

和(曲目:“忘记天鹅”和曲目:“就像天堂一样”)和曲目:[2到100]和src:1&limit=100&offset=0

给出了2个结果

在第一种情况下,它似乎返回田径场匹配“忘记天鹅”或“只是天堂”的文档,而第二种情况仅在田径场匹配两者时返回,因此第一个查询的作用就像两个田径参数之间存在一个隐式or,如下所示

和(+音轨:“忘记天鹅”或+音轨:“就像天堂一样”)和音轨:[2到100]和src:1&limit=100&offset=0

但如果是这样,+运算符的意义是什么

更新:
我现在想知道这个问题是否与通过internet进行查询以及“+”是否被错误编码有关

关于需要在URL中转义“+”的问题,你是对的。就Lucene语法而言,
x和y
被查询解析器解释为
+x+y
,因此它们在定义上是相同的

尝试用
%2B
替换加号:


对,thx有效,但我有点困惑。我最初的问题是,由我的服务器编码的查询与放入Firefox浏览器并由Firefox编码的查询得到的结果不同。我认为我的代码错了,但现在看来Firefox错了——comments@PaulTaylor——我不会说Firefox错了,真的。不幸的是,Firefox还没有配备读心技术,所以不能指望它知道这个加号应该是文字加号,而不是通常的转义空间。没错,所以我用Firefox作为基准来比较我的查询是错误的,(似乎这只是给我带来问题的加号)