2014-02-18 189 views
0

我想在字段1中搜索關鍵字1並且在字段2中搜索關鍵字2 實際上,此代碼完美地工作,但它給了我包含其中一個關鍵字的field1和field2的結果:使用LUCENE庫在多字段中搜索多個關鍵字

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_46, stopWordsSet); 

String[] fields = { "field1", "field2"}; 
Float float10 = new Float(10); 
Float float5 = new Float(5); 
Map<String, Float> boost = new HashMap<String, Float>(); 
boost.put("nom", float10); 
boost.put("email", float10); 
MultiFieldQueryParser mfqp = new MultiFieldQueryParser(Version.LUCENE_46,fields, analyzer, boost); 
mfqp.setAllowLeadingWildcard(true); 
Query userQuery = mfqp.parse("*keyword*"); 

回答

0

你的問題似乎是要找到包含「關鍵字」中 FIELD1和FIELD2文件。如果這是正確的,以下可能會有所幫助。注意默認運算符爲OR時所需的+符號。

Query userQuery = mfqp.parse("+field1:*keyword* +field2:*keyword*") 
0

如果你想找到它包含關鍵字1在FIELD2 FIELD1和1關鍵字的文檔,然後布爾查詢可以幫助:

BooleanQuery query = new BooleanQuery(); 
query.add(new TermQuery(new Term("field1", "keyword1")), BooleanClause.Occur.MUST); 
query.add(new TermQuery(new Term("field2", "keyword2")), BooleanClause.Occur.MUST);