2014-04-29 34 views
0

我有一個查詢這件事情是這樣的:「AND」的Lucene語法如何解釋錯誤?

field1:"stuff" AND field2:"other"

當它跑了小寫and它會產生不同的結果。所以,這個查詢:

field1:"stuff" and field2:"other"

凡 '和' 是小寫。我使用經典QueryParser解析查詢,並且在解析較低的'and'時它不會投訴(拋出異常),但它確實會產生「更多」結果。就好像'和'可能是它正在查找的標記,所以比使用2個子句的普通查詢會產生更多結果?

Lucene語法與'和'封裝錯誤解釋如何?

FYI,關於Java 7和Java 8.

回答

1

AND操作者must be uppercase使用Lucene 4.4。小寫and只會被解釋爲搜索詞,所以生成的查詢將是:

field1:"stuff" defaultfield:and field2:"other" 

如果您正在使用StandardAnalyzer,術語and將搜索作爲停用詞被淘汰,所以你有效查詢是:

field:"stuff" field2:"other" 

這相當於兩個與OR組合代替AND,。