Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/BasicDocMaker.java
===================================================================
--- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/BasicDocMaker.java	(revision 635689)
+++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/BasicDocMaker.java	(working copy)
@@ -106,7 +106,7 @@
   private Document createDocument(DocData docData, int size, int cnt) throws UnsupportedEncodingException {
     int docid = incrNumDocsCreated();
     Document doc = new Document();
-    doc.add(new Field(ID_FIELD, "doc"+docid, storeVal, indexVal, termVecVal));
+    doc.add(new Field(ID_FIELD, ""+docid, storeVal, indexVal, termVecVal));
     if (docData.getName()!=null) {
       String name = (cnt<0 ? docData.getName() : docData.getName()+"_"+cnt);
       doc.add(new Field(NAME_FIELD, name, storeVal, indexVal, termVecVal));
Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CommitIndexTask.java
===================================================================
--- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CommitIndexTask.java	(revision 0)
+++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CommitIndexTask.java	(revision 0)
@@ -0,0 +1,23 @@
+package org.apache.lucene.benchmark.byTask.tasks;
+
+import org.apache.lucene.benchmark.byTask.PerfRunData;
+import org.apache.lucene.index.IndexWriter;
+
+/**
+ * Commits the IndexReader.
+ *
+ */
+public class CommitIndexTask extends PerfTask {
+  public CommitIndexTask(PerfRunData runData) {
+    super(runData);
+  }
+
+  public int doLogic() throws Exception {
+    IndexWriter iw = getRunData().getIndexWriter();
+    if (iw!=null) {
+      iw.commit();
+    }
+    
+    return 1;
+  }
+}
Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java
===================================================================
--- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java	(revision 635689)
+++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReadTask.java	(working copy)
@@ -17,8 +17,15 @@
  * limitations under the License.
  */
 
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.benchmark.byTask.PerfRunData;
 import org.apache.lucene.benchmark.byTask.feeds.QueryMaker;
 import org.apache.lucene.document.Document;
@@ -27,13 +34,15 @@
 import org.apache.lucene.search.Hits;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
-import org.apache.lucene.search.highlight.*;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.highlight.Highlighter;
+import org.apache.lucene.search.highlight.QueryScorer;
+import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
+import org.apache.lucene.search.highlight.TextFragment;
+import org.apache.lucene.search.highlight.TokenSources;
 import org.apache.lucene.store.Directory;
 
-import java.io.IOException;
-import java.util.*;
 
-
 /**
  * Read index (abstract) task.
  * Sub classes implement withSearch(), withWarm(), withTraverse() and withRetrieve()
@@ -79,7 +88,13 @@
       IndexSearcher searcher = new IndexSearcher(ir);
       QueryMaker queryMaker = getQueryMaker();
       Query q = queryMaker.makeQuery();
-      Hits hits = searcher.search(q);
+      Sort sort = getSort();
+      Hits hits;
+      if(sort != null) {
+        hits = searcher.search(q, sort);
+      } else {
+        hits = searcher.search(q);
+      }
       //System.out.println("searched: "+q);
 
       if (withTraverse() && hits != null) {
@@ -139,6 +154,7 @@
    * Return true if search should be performed.
    */
   public abstract boolean withSearch();
+  
 
   /**
    * Return true if warming should be performed.
@@ -200,6 +216,10 @@
     TextFragment[] frag = highlighter.getBestTextFragments(ts, text, mergeContiguous, maxFragments);
     return frag != null ? frag.length : 0;
   }
+  
+  protected Sort getSort() {
+    return null;
+  }
 
   /**
    * Define the fields to highlight.  Base implementation returns all fields
Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java
===================================================================
--- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java	(revision 0)
+++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ReopenReaderTask.java	(revision 0)
@@ -0,0 +1,27 @@
+package org.apache.lucene.benchmark.byTask.tasks;
+
+import java.io.IOException;
+
+import org.apache.lucene.benchmark.byTask.PerfRunData;
+import org.apache.lucene.index.IndexReader;
+
+/**
+* Reopens IndexReader and closes old IndexReader.
+*
+*/
+public class ReopenReaderTask extends PerfTask {
+  public ReopenReaderTask(PerfRunData runData) {
+    super(runData);
+  }
+
+  public int doLogic() throws IOException {
+    IndexReader ir = getRunData().getIndexReader();
+    IndexReader or = ir;
+    IndexReader nr = ir.reopen();
+    if(nr != or) {
+      getRunData().setIndexReader(nr);
+      or.close();
+    }
+    return 1;
+  }
+}
Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/SearchWithSortTask.java
===================================================================
--- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/SearchWithSortTask.java	(revision 0)
+++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/SearchWithSortTask.java	(revision 0)
@@ -0,0 +1,58 @@
+package org.apache.lucene.benchmark.byTask.tasks;
+
+import org.apache.lucene.benchmark.byTask.PerfRunData;
+import org.apache.lucene.benchmark.byTask.feeds.QueryMaker;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.SortField;
+
+/**
+ * Does sort search on specified field.
+ *
+ */
+public class SearchWithSortTask extends ReadTask {
+  
+  private String sortField;
+  
+  public SearchWithSortTask(PerfRunData runData) {
+    super(runData);
+  }
+ 
+  /**
+   * Set the params (docSize only)
+   * @param params docSize, or 0 for no limit.
+   */
+  public void setParams(String sortField) {
+    super.setParams(sortField);
+    this.sortField = sortField;
+  }
+  
+  public boolean supportsParams() {
+    return true;
+  }
+
+  public QueryMaker getQueryMaker() {
+    return getRunData().getQueryMaker(this);
+  }
+
+  public boolean withRetrieve() {
+    return false;
+  }
+
+  public boolean withSearch() {
+    return true;
+  }
+
+  public boolean withTraverse() {
+    return false;
+  }
+
+  public boolean withWarm() {
+    return false;
+  }
+  
+  public Sort getSort() {
+   Sort sort = new Sort(new SortField(sortField));
+   return sort;
+  }
+  
+}
