Binary files perf/RandomFilter.class and ../lucene-trunk/modules/benchmark/perf/RandomFilter.class differ
diff -urN perf/RandomFilter.java ../lucene-trunk/modules/benchmark/perf/RandomFilter.java
--- perf/RandomFilter.java	2011-05-08 10:28:57.300078856 -0400
+++ ../lucene-trunk/modules/benchmark/perf/RandomFilter.java	2011-10-07 12:29:44.578772785 -0400
@@ -22,6 +22,8 @@
 import org.apache.lucene.search.DocIdSet;
 import org.apache.lucene.search.Filter;
 import org.apache.lucene.util.OpenBitSet;
+import org.apache.lucene.util.*;
+import org.apache.lucene.search.*;
 
 class RandomFilter extends Filter {
   final double pctKeep;
@@ -31,12 +33,12 @@
   }
 
   @Override
-  public DocIdSet getDocIdSet(AtomicReaderContext context) {
+  public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
     final Random rand = new Random(42);
     final int maxDoc = context.reader.maxDoc();
     OpenBitSet bits = new OpenBitSet(maxDoc);
     for(int docID = 0;docID<maxDoc;docID++) {
-      if (rand.nextDouble() <= pctKeep) {        
+      if (rand.nextDouble() <= pctKeep && (acceptDocs == null || acceptDocs.get(docID))) {        
         bits.fastSet(docID);
       }
     }
Binary files perf/SearchPerfTest.class and ../lucene-trunk/modules/benchmark/perf/SearchPerfTest.class differ
diff -urN perf/SearchPerfTest.java ../lucene-trunk/modules/benchmark/perf/SearchPerfTest.java
--- perf/SearchPerfTest.java	2011-10-07 12:02:56.548772787 -0400
+++ ../lucene-trunk/modules/benchmark/perf/SearchPerfTest.java	2011-10-07 12:25:46.798772785 -0400
@@ -602,10 +602,10 @@
     }
 
     @Override
-    public DocIdSet getDocIdSet(AtomicReaderContext context) {
+    public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) {
       final FixedBitSet bits = segmentBits[context.ord];
       assert context.reader.maxDoc() == bits.length();
-      return bits;
+      return BitsFilteredDocIdSet.wrap(bits, acceptDocs);
     }
   }
 
@@ -661,7 +661,7 @@
           final double filterPct = Double.parseDouble(m.group(1));
           // Splice out the filter string:
           text = (text.substring(0, m.start(0)) + text.substring(m.end(0), text.length())).trim();
-          filter = new CachingWrapperFilter(new PreComputedRandomFilter(maxDocPerSegment, random, filterPct), CachingWrapperFilter.DeletesMode.RECACHE);
+          filter = new CachingWrapperFilter(new PreComputedRandomFilter(maxDocPerSegment, random, filterPct));
         } else {
           filter = null;
         }
Binary files perf/SearchPerfTest$PreComputedRandomFilter.class and ../lucene-trunk/modules/benchmark/perf/SearchPerfTest$PreComputedRandomFilter.class differ
