Index: lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java =================================================================== --- lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (revision 943346) +++ lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java (working copy) @@ -565,4 +565,11 @@ q2.toString(); } + /* test that a single term is rewritten to a term query */ + public void testRewrite() throws IOException { + PhraseQuery pq = new PhraseQuery();; + pq.add(new Term("foo", "bar")); + Query rewritten = pq.rewrite(searcher.getIndexReader()); + assertTrue(rewritten instanceof TermQuery); + } } Index: lucene/src/java/org/apache/lucene/search/PhraseQuery.java =================================================================== --- lucene/src/java/org/apache/lucene/search/PhraseQuery.java (revision 943346) +++ lucene/src/java/org/apache/lucene/search/PhraseQuery.java (working copy) @@ -110,6 +110,16 @@ return result; } + @Override + public Query rewrite(IndexReader reader) throws IOException { + if (terms.size() == 1) { + TermQuery tq = new TermQuery(terms.get(0)); + tq.setBoost(getBoost()); + return tq; + } else + return super.rewrite(reader); + } + private class PhraseWeight extends Weight { private final Similarity similarity; private float value;