Index: src/test/org/apache/lucene/queryParser/TestMultiFieldQueryParser.java
===================================================================
--- src/test/org/apache/lucene/queryParser/TestMultiFieldQueryParser.java	(revision 635195)
+++ src/test/org/apache/lucene/queryParser/TestMultiFieldQueryParser.java	(working copy)
@@ -113,6 +113,10 @@
     q = mfqp.parse("\"foo bar\"~4");
     assertEquals("b:\"foo bar\"~4 t:\"foo bar\"~4", q.toString());
 
+    // LUCENE-1213: MultiFieldQueryParser was ignoring slop when phrase had a field.
+    q = mfqp.parse("b:\"foo bar\"~4"); 
+    assertEquals("b:\"foo bar\"~4", q.toString());
+
     // make sure that terms which have a field are not touched:
     q = mfqp.parse("one f:two");
     assertEquals("(b:one t:one) f:two", q.toString());
Index: src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java
===================================================================
--- src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java	(revision 635195)
+++ src/java/org/apache/lucene/queryParser/MultiFieldQueryParser.java	(working copy)
@@ -99,7 +99,7 @@
     if (field == null) {
       Vector clauses = new Vector();
       for (int i = 0; i < fields.length; i++) {
-        Query q = getFieldQuery(fields[i], queryText);
+        Query q = super.getFieldQuery(fields[i], queryText);
         if (q != null) {
           //If the user passes a map of boosts
           if (boosts != null) {
@@ -109,12 +109,7 @@
               q.setBoost(boost.floatValue());
             }
           }
-          if (q instanceof PhraseQuery) {
-            ((PhraseQuery) q).setSlop(slop);
-          }
-          if (q instanceof MultiPhraseQuery) {
-            ((MultiPhraseQuery) q).setSlop(slop);
-          }
+          applySlop(q,slop);
           clauses.add(new BooleanClause(q, BooleanClause.Occur.SHOULD));
         }
       }
@@ -122,8 +117,19 @@
         return null;
       return getBooleanQuery(clauses, true);
     }
-    return super.getFieldQuery(field, queryText);
+    Query q = super.getFieldQuery(field, queryText);
+    applySlop(q,slop);
+    return q;
   }
+
+  private void applySlop(Query q, int slop) {
+    if (q instanceof PhraseQuery) {
+      ((PhraseQuery) q).setSlop(slop);
+    }
+    if (q instanceof MultiPhraseQuery) {
+      ((MultiPhraseQuery) q).setSlop(slop);
+    }
+  }
   
 
   protected Query getFieldQuery(String field, String queryText) throws ParseException {
