我的查询是这样的:
field1:"stuff" AND field2:"other"
当它以小写and
运行时,会产生不同的结果。所以这个查询:
field1:"stuff" and field2:"other"
'和'是小写的。我使用经典QueryParser
解析查询,并且在解析较低版本的'和#39;时它不会抱怨(抛出异常),但它确实会生成&# 39;更'结果。好像'和'可能是它正在寻找的标记,因此有比2个子句产生的普通查询更多的结果?
Lucene如何使用'和'套管错误解释?
仅供参考,在Java 7和Java 8上使用Lucene 4.4。
答案 0 :(得分:1)
AND
运算符must be uppercase。小写and
将被解释为搜索词,因此生成的查询将为:
field1:"stuff" defaultfield:and field2:"other"
如果您使用StandardAnalyzer
,则and
一词将从搜索中删除为停用词,因此您的有效查询为:
field:"stuff" field2:"other"
相当于将两者合并为OR
,而不是AND
。