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 642612) +++ 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; + } + +}