猿问

Lucene MultiFieldQueryParser不起作用

我不明白为什么查询不起作用。


我需要按两个字段搜索文档。两个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%。已通过其他请求验证。


拉风的咖菲猫
浏览 198回答 1
1回答

holdtom

由于您只想在两个单独的查询之间执行AND交集-而不是真正执行MultiFieldQuery(您在多个字段中搜索相同的值),因此应该对使用Boolean Query进行的Lucene OR搜索中显示的内容进行稍作修改的版本工作:BooleanQuery bothQuery = new BooleanQuery();                                         // field, valueTermQuery 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)
随时随地看视频慕课网APP

相关分类

Java
我要回答