1 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
由于您只想在兩個(gè)單獨(dú)的查詢之間執(zhí)行AND交集-而不是真正執(zhí)行MultiFieldQuery(您在多個(gè)字段中搜索相同的值),因此應(yīng)該對(duì)使用Boolean Query進(jìn)行的Lucene OR搜索中顯示的內(nèi)容進(jìn)行稍作修改的版本工作:
BooleanQuery bothQuery = new BooleanQuery();
// field, value
TermQuery idQuery1 = new TermQuery(new Term("ID1", "id1"));
TermQuery idQuery2 = new TermQuery(new Term("ID2", "id2"));
bothQuery.add(new BooleanClause(idQuery1, BooleanClause.Occur.MUST));
bothQuery.add(new BooleanClause(idQuery2, BooleanClause.Occur.MUST));
TopDocs topDocs = searcher.search(bothQuery, 1);
Document doc = searcher.doc(topDocs.scoreDocs[0].doc)
添加回答
舉報(bào)