如果整個查詢不返回任何結果,我需要確定Lucene BooleanQuery的哪個部分失敗。我使用BooleanQuery
組成和PhraseQuery
。每個都通過Occur.MUST
添加到查詢中。確定哪個參數在Lucene BooleanQuery中失敗?
如果我沒有得到任何查詢結果,有沒有辦法告訴哪部分查詢無法匹配任何東西?我是否需要單獨運行查詢並比較結果以獲得失敗的結果?
編輯 - 添加了PhraseQuery
的代碼。
if(row.getPropertykey_tx() != null && !row.getPropertykey_tx().trim().isEmpty()){
PhraseQuery pQuery = new PhraseQuery();
String[] words = row.getPropertykey_tx().trim().split(" ");
for(String word : words){
pQuery.add(new Term(TitleRecordColumns.SA_SITE_ADDR.toString(), word));
}
pQuery.setSlop(2);
topBQuery.add(pQuery, BooleanClause.Occur.MUST);
}
我添加了代碼來創建我的PhraseQuery。該指數約爲1300萬條記錄。我不知道任何一個條目的具體文件ID。我想要做的是記錄任何不會產生結果的東西,以便我可以稍後分析。 – Cuthbert
看起來你正在接近'PhraseQuery'的方式,儘管如此,我仍然會關注分析。如果該字段使用「StandardAnalyzer」,例如標點符號,大寫字符等可能會產生問題,如果其他地方沒有進一步標準化。 – femtoRgon
它確實使用'StandardAnalyzer',但我在我的代碼中刪除了其他地方的標點符號。所以我覺得我沒事。謝謝你!您提供的代碼段非常有幫助。 – Cuthbert