我不明白为什么查询不起作用。我需要按两个字段搜索文档。两个ID。如果两个值匹配,则需要搜索文档。ID1和ID2但是我得到了一个空洞的结果。 query = MultiFieldQueryParser.parse(new String[]{id1, id2}, new String[]{"ID1", "ID2"}, new SimpleAnalyzer()); TopDocs topDocs = searcher.search(query, 1); Document doc = searcher.doc(topDocs.scoreDocs[0].doc)该指数为100%。已通过其他请求验证。
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
由于您只想在两个单独的查询之间执行AND交集-而不是真正执行MultiFieldQuery(您在多个字段中搜索相同的值),因此应该对使用Boolean Query进行的Lucene OR搜索中显示的内容进行稍作修改的版本工作:
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)
添加回答
举报
0/150
提交
取消