我想在field1中搜索keyword1,在字段2中搜索keyword2 实际上这段代码完美无缺,但它给了我其中一个包含关键字的field1和field2的结果:
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 :(得分:0)
您的问题似乎是在 field1和field2中查找包含'keyword'的文档。如果这是正确的,以下可能会有所帮助。注意默认运算符为OR时需要的+符号。
Query userQuery = mfqp.parse("+field1:*keyword* +field2:*keyword*")
答案 1 :(得分:0)
如果要在field1中找到包含keyword1的文档,在field2中找到包含keyword2的文档,那么布尔查询可能会有所帮助:
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);