Index: lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java
===================================================================
--- lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java	(revision 1137477)
+++ lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java	(working copy)
@@ -22,11 +22,15 @@
 import org.apache.lucene.analysis.tokenattributes.*;
 import org.apache.lucene.document.*;
 import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.store.*;
 import org.apache.lucene.util.Version;
 import org.apache.lucene.util._TestUtil;
+import org.apache.lucene.util.automaton.BasicAutomata;
+import org.apache.lucene.util.automaton.CharacterRunAutomaton;
+import org.apache.lucene.util.automaton.RegExp;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
@@ -694,4 +698,47 @@
     s.close();
     dir.close();
   }
+  
+  public void testInfiniteFreq() throws Exception {
+    String document = "drug druggy drug drug drug";
+    
+    Directory dir = newDirectory();
+    CharacterRunAutomaton stopSet = new CharacterRunAutomaton(BasicAutomata.makeString("the"));
+    MockAnalyzer analyzer = new MockAnalyzer(random, MockTokenizer.WHITESPACE, true, stopSet, true);
+    RandomIndexWriter iw = new RandomIndexWriter(random, dir, analyzer);
+    Document doc = new Document();
+    doc.add(newField("lyrics", document, Field.Index.ANALYZED));
+    iw.addDocument(doc);
+    IndexReader ir = iw.getReader();
+    iw.close();
+    
+    IndexSearcher is = newSearcher(ir);
+    Query pq = new QueryParser(TEST_VERSION_CURRENT, "lyrics", analyzer).parse("\"drug the drug\"~1");
+    is.search(pq, new Collector() {
+      Scorer scorer;
+
+      @Override
+      public void setScorer(Scorer scorer) throws IOException {
+        this.scorer = scorer;
+      }
+
+      @Override
+      public void collect(int doc) throws IOException {
+        assertFalse(Float.isInfinite(scorer.freq()));
+        assertFalse(Float.isInfinite(scorer.score()));
+      }
+
+      @Override
+      public void setNextReader(AtomicReaderContext context) throws IOException {
+      }
+
+      @Override
+      public boolean acceptsDocsOutOfOrder() {
+        return false;
+      }
+    });
+    is.close();
+    ir.close();
+    dir.close();
+  }
 }
