最近在用Java+Lucene作一個站內搜索項目,在進行檢索查詢的時候涉及到4個關鍵字,而且3個是SHOULD,一個是MUST。這樣就遇到了問題,根據官方文檔說明和實際的測試發現,在檢索的時候,若是其中一個字段爲MUST,Searcher就會忽略其餘的關鍵字。ide
爲了解決這個問題,查了不少方法,最後用Filter解決了。解決方法爲:把應爲MUST來查詢的字段,根據他的規律建立一個TermRangeFilter(根據你的實際狀況來決定用哪一個Filter),在檢索時,用Searcher的search(Query,Filter,Integer.MAX_VALUE);方法實現就能夠了。測試
注:多字段時,Query我使用的是BooleanQuery。文檔