diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
index 672d12a..2a506ba 100644
--- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
+++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
@@ -252,7 +252,7 @@
     if (!Sets.intersection(statuses, CLOSED_STATUSES).isEmpty()) {
       indexes.add(closedIndex);
     }
-    return new QuerySource(indexes, queryBuilder.toQuery(p), opts, getSort());
+    return new QuerySource(indexes, p, opts, getSort());
   }
 
   @Override
@@ -274,14 +274,19 @@
 
   private class QuerySource implements ChangeDataSource {
     private final List<ChangeSubIndex> indexes;
+    private final Predicate<ChangeData> predicate;
     private final Query query;
     private final QueryOptions opts;
     private final Sort sort;
 
-    private QuerySource(List<ChangeSubIndex> indexes, Query query, QueryOptions opts,
-        Sort sort) {
+
+    private QuerySource(List<ChangeSubIndex> indexes,
+        Predicate<ChangeData> predicate, QueryOptions opts, Sort sort)
+        throws QueryParseException {
       this.indexes = indexes;
-      this.query = checkNotNull(query, "null query from Lucene");
+      this.predicate = predicate;
+      this.query = checkNotNull(queryBuilder.toQuery(predicate),
+          "null query from Lucene");
       this.opts = opts;
       this.sort = sort;
     }
@@ -298,7 +303,7 @@
 
     @Override
     public String toString() {
-      return query.toString();
+      return predicate.toString();
     }
 
     @Override
@@ -315,6 +320,11 @@
             public List<Document> call() throws IOException {
               return doRead(fields);
             }
+
+            @Override
+            public String toString() {
+              return predicate.toString();
+            }
           }), fields);
     }
 
