[英]Lucene MultiFieldQueryParser does not work
我不明白為什么查詢不起作用。
我需要按兩個字段搜索文檔。 兩個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(您在多個字段中搜索相同的值),因此應該對使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.