gpt4 book ai didi

java - Lucene MultiFieldQueryParser 不起作用

转载 作者:行者123 更新时间:2023-12-02 11:03:16 26 4
gpt4 key购买 nike

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

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

感谢您的帮助。

最佳答案

由于您只想在两个单独的查询之间执行 AND 交集 - 而不是真正执行 MultiFieldQuery(在多个字段中搜索相同的值),因此对 Lucene OR search using Boolean Query 中显示的内容进行了稍微修改的版本。应该有效:

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)

关于java - Lucene MultiFieldQueryParser 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51171640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com