Index: src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java =================================================================== --- src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java (revision 3897) +++ src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java (revision 3898) @@ -122,12 +122,32 @@ return null; return getBooleanQuery(clauses, true); } - return super.getFieldQuery(field, queryText); + return super.getFieldQuery(field, queryText, slop); } protected Query getFieldQuery(String field, String queryText) throws ParseException { - return getFieldQuery(field, queryText, 0); + if (field == null) { + Vector clauses = new Vector(); + for (int i = 0; i < fields.length; i++) { + Query q = getFieldQuery(fields[i], queryText); + if (q != null) { + //If the user passes a map of boosts + if (boosts != null) { + //Get the boost from the map and apply them + Float boost = (Float)boosts.get(fields[i]); + if (boost != null) { + q.setBoost(boost.floatValue()); + } + } + clauses.add(new BooleanClause(q, BooleanClause.Occur.SHOULD)); + } + } + if (clauses.size() == 0) // happens for stopwords + return null; + return getBooleanQuery(clauses, true); + } + return super.getFieldQuery(field, queryText); }