我不明白为什么查询不起作用。
我需要按两个字段搜索文档。两个ID-s。如果两个值匹配,则需要搜索文档。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%有效。由其他请求验证。
谢谢你的帮助。
2条答案
按热度按时间mctunoxg1#
由于您只想在两个单独的查询之间执行AND交集,而不是真正执行MultiFieldQuery(在多个字段中搜索相同的值),因此Lucene OR search using Boolean Query中显示的稍微修改的版本应该可以工作:
zpgglvta2#
感谢MatsLindh给出上述答案。多亏了你,学校作业也解决了类似的问题。
请记住,示例代码已经过时,对于Lucene 8.9(我的例子),您应该这样做
TermQuery对象和Query对象可以互换使用,以替换上述代码的query1和query2。