为了账号安全,请及时绑定邮箱和手机立即绑定

Lucene MultiFieldQueryParser不起作用

Lucene MultiFieldQueryParser不起作用

拉风的咖菲猫 2021-05-01 14:42:19
我不明白为什么查询不起作用。我需要按两个字段搜索文档。两个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)


查看完整回答
反对 回复 2021-05-12
  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信