You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/08/06 17:59:30 UTC
[32/33] lucenenet git commit: lucene-cli: Added benchmark commands,
tests and documentation
lucene-cli: Added benchmark commands, tests and documentation
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/4a8507a1
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/4a8507a1
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/4a8507a1
Branch: refs/heads/master
Commit: 4a8507a1941503ce17823dce748ace1bd953b89e
Parents: 564a292
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Mon Aug 7 00:14:41 2017 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Mon Aug 7 00:14:41 2017 +0700
----------------------------------------------------------------------
.../ByTask/Programmatic/Sample.cs | 2 +-
.../Commands/Benchmark/BenchmarkCommandTest.cs | 50 ++++++
.../BenchmarkExtractReutersCommandTest.cs | 61 +++++++
.../BenchmarkExtractWikipediaCommandTest.cs | 66 +++++++
.../BenchmarkFindQualityQueriesCommandTest.cs | 65 +++++++
.../Benchmark/BenchmarkRunCommandTest.cs | 60 +++++++
.../BenchmarkRunTrecEvalCommandTest.cs | 63 +++++++
.../lucene-cli/Resources/Strings.Designer.cs | 171 +++++++++++++++++++
src/tools/lucene-cli/Resources/Strings.resx | 57 +++++++
src/tools/lucene-cli/commands/RootCommand.cs | 4 +-
.../commands/benchmark/BenchmarkCommand.cs | 51 ++++++
.../BenchmarkExtractReutersCommand.cs | 52 ++++++
.../BenchmarkExtractWikipediaCommand.cs | 72 ++++++++
.../BenchmarkFindQualityQueriesCommand.cs | 51 ++++++
.../BenchmarkRunTrecEvalCommand.cs | 78 +++++++++
.../benchmark-run/BenchmarkRunCommand.cs | 50 ++++++
.../benchmark-sample/BenchmarkSampleCommand.cs | 53 ++++++
.../commands/demo/DemoConfiguration.cs | 1 +
.../docs/benchmark/extract-reuters.md | 31 ++++
.../docs/benchmark/extract-wikipedia.md | 35 ++++
.../docs/benchmark/find-quality-queries.md | 27 +++
src/tools/lucene-cli/docs/benchmark/index.md | 14 ++
.../lucene-cli/docs/benchmark/run-trec-eval.md | 51 ++++++
src/tools/lucene-cli/docs/benchmark/run.md | 31 ++++
src/tools/lucene-cli/docs/benchmark/sample.md | 29 ++++
src/tools/lucene-cli/project.json | 2 +
26 files changed, 1223 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs b/src/Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs
index 6b248f6..3dbb07b 100644
--- a/src/Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs
+++ b/src/Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs
@@ -72,7 +72,7 @@ namespace Lucene.Net.Benchmarks.ByTask.Programmatic
var p = new Dictionary<string, string>();
p["task.max.depth.log"] = "3";
p["max.buffered"] = "buf:10:10:100:100:10:10:100:100";
- p["doc.maker"] = "Lucene.Net.Benchmarks.ByTask.Feeds.ReutersContentSource, Lucene.Net.Benchmark";
+ //p["doc.maker"] = "Lucene.Net.Benchmarks.ByTask.Feeds.ReutersContentSource, Lucene.Net.Benchmark";
p["log.step"] = "2000";
p["doc.delete.step"] = "8";
p["analyzer"] = "Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net.Analysis.Common";
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkCommandTest.cs
new file mode 100644
index 0000000..999b282
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkCommandTest.cs
@@ -0,0 +1,50 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new DemoCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>();
+ }
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>();
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one", ""));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractReutersCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractReutersCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractReutersCommandTest.cs
new file mode 100644
index 0000000..7d0c947
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractReutersCommandTest.cs
@@ -0,0 +1,61 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkExtractReutersCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new BenchmarkExtractReutersCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ return new List<Arg[]>();
+ }
+
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp", output: new string[] { @"C:\lucene-temp" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp2", output: new string[] { @"C:\lucene-temp2" }) },
+ };
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestNotEnoughArguments()
+ {
+ AssertConsoleOutput("one", FromResource("NotEnoughArguments", 2));
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two three", ""));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractWikipediaCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractWikipediaCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractWikipediaCommandTest.cs
new file mode 100644
index 0000000..f5d3477
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkExtractWikipediaCommandTest.cs
@@ -0,0 +1,66 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkExtractWikipediaCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new BenchmarkExtractWikipediaCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: "-d|--discard-image-only-docs", output: new string[] { "--discardImageOnlyDocs" }) },
+ };
+ }
+
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: @"", output: new string[] { "--input" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp\docs.txt", output: new string[] { @"C:\lucene-temp\docs.txt" }) },
+ new Arg[] { new Arg(inputPattern: @"", output: new string[] { "--output" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp2", output: new string[] { @"C:\lucene-temp2" }) },
+ };
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestNotEnoughArguments()
+ {
+ AssertConsoleOutput("one", FromResource("NotEnoughArguments", 2));
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two three", ""));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkFindQualityQueriesCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkFindQualityQueriesCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkFindQualityQueriesCommandTest.cs
new file mode 100644
index 0000000..738040e
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkFindQualityQueriesCommandTest.cs
@@ -0,0 +1,65 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkFindQualityQueriesCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new BenchmarkFindQualityQueriesCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>();
+ }
+
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp", output: new string[] { @"C:\lucene-temp" }) },
+ };
+ }
+
+ /// <summary>
+ /// Ensures the current working directory is used when index directory is not supplied.
+ /// </summary>
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestNoArguments()
+ {
+ System.IO.Directory.SetCurrentDirectory(@"C:\");
+ AssertCommandTranslation("", new string[] { @"C:\" });
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two", ""));
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunCommandTest.cs
new file mode 100644
index 0000000..ab87b70
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunCommandTest.cs
@@ -0,0 +1,60 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkRunCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new BenchmarkRunCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>();
+ }
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp\test.alg", output: new string[] { @"C:\lucene-temp\test.alg" }) },
+ };
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestNotEnoughArguments()
+ {
+ AssertConsoleOutput("", FromResource("NotEnoughArguments", 1));
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two", ""));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunTrecEvalCommandTest.cs
----------------------------------------------------------------------
diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunTrecEvalCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunTrecEvalCommandTest.cs
new file mode 100644
index 0000000..ba8a574
--- /dev/null
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Benchmark/BenchmarkRunTrecEvalCommandTest.cs
@@ -0,0 +1,63 @@
+using Lucene.Net.Attributes;
+using Lucene.Net.Cli.CommandLine;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli.Commands
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkRunTrecEvalCommandTest : CommandTestCase
+ {
+ protected override ConfigurationBase CreateConfiguration(MockConsoleApp app)
+ {
+ return new BenchmarkRunTrecEvalCommand.Configuration(new CommandLineOptions()) { Main = (args) => app.Main(args) };
+ }
+
+ protected override IList<Arg[]> GetOptionalArgs()
+ {
+ return new List<Arg[]>();
+ }
+
+ protected override IList<Arg[]> GetRequiredArgs()
+ {
+ // NOTE: We must order this in the sequence of the expected output.
+ return new List<Arg[]>()
+ {
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp\input.txt", output: new string[] { @"C:\lucene-temp\input.txt" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp2\input.txt", output: new string[] { @"C:\lucene-temp2\input.txt" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp3\output.txt", output: new string[] { @"C:\lucene-temp3\output.txt" }) },
+ new Arg[] { new Arg(inputPattern: @"C:\lucene-temp4", output: new string[] { @"C:\lucene-temp4" }) },
+ };
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestNotEnoughArguments()
+ {
+ AssertConsoleOutput("one two three", FromResource("NotEnoughArguments", 4));
+ }
+
+ [Test]
+ [LuceneNetSpecific]
+ public virtual void TestTooManyArguments()
+ {
+ Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two three four five", ""));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/Resources/Strings.Designer.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/Resources/Strings.Designer.cs b/src/tools/lucene-cli/Resources/Strings.Designer.cs
index 6cbbdde..caed9b1 100644
--- a/src/tools/lucene-cli/Resources/Strings.Designer.cs
+++ b/src/tools/lucene-cli/Resources/Strings.Designer.cs
@@ -207,6 +207,177 @@ namespace Lucene.Net.Cli.Resources {
}
/// <summary>
+ /// Looks up a localized string similar to Utilities for benchmarking Lucene.Net..
+ /// </summary>
+ public static string BenchmarkCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Splits Reuters SGML documents into simple text files containing: Title, Date, Dateline, Body..
+ /// </summary>
+ public static string BenchmarkExtractReutersCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractReutersCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Path to Reuters SGML files..
+ /// </summary>
+ public static string BenchmarkExtractReutersCommandInputDirectoryDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractReutersCommandInputDirectoryDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Path to a directory where the output files will be written..
+ /// </summary>
+ public static string BenchmarkExtractReutersCommandOutputDirectoryDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractReutersCommandOutputDirectoryDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Extracts a downloaded Wikipedia dump into separate files for indexing..
+ /// </summary>
+ public static string BenchmarkExtractWikipediaCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractWikipediaCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Tells the extractor to skip WIKI docs that contain only images..
+ /// </summary>
+ public static string BenchmarkExtractWikipediaCommandDiscardImageOnlyDocsDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractWikipediaCommandDiscardImageOnlyDocsDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Input path to a Wikipedia XML file..
+ /// </summary>
+ public static string BenchmarkExtractWikipediaCommandInputWikipediaFileDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractWikipediaCommandInputWikipediaFileDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Path to a directory where the output files will be written..
+ /// </summary>
+ public static string BenchmarkExtractWikipediaCommandOutputDirectoryDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkExtractWikipediaCommandOutputDirectoryDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Suggests quality queries based on index contents. Used for making quality test benchmarks..
+ /// </summary>
+ public static string BenchmarkFindQualityQueriesCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkFindQualityQueriesCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to An algorithm file specifying the parameters of the benchmark to run..
+ /// </summary>
+ public static string BenchmarkRunCommandAlgorithmFileDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunCommandAlgorithmFileDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Runs a benchmark based on an algorithm file..
+ /// </summary>
+ public static string BenchmarkRunCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Runs a TREC evaluation..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Output submission file for TREC evaluation..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandOutputSubmissionFileDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandOutputSubmissionFileDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Use description field in query..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandQueryOnDescriptionDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandQueryOnDescriptionDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Use narrative field in query..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandQueryOnNarrativeDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandQueryOnNarrativeDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Use title field in query. This flag will automatically be on if no other field is specified..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandQueryOnTitleDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandQueryOnTitleDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Input file conataining relevance judgements..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandQueryRelevanceFileDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandQueryRelevanceFileDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Input file containing queries..
+ /// </summary>
+ public static string BenchmarkRunTrecEvalCommandTopicsFileDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkRunTrecEvalCommandTopicsFileDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Sample of a performance test written programatically instead of using an algorithm file..
+ /// </summary>
+ public static string BenchmarkSampleCommandDescription {
+ get {
+ return ResourceManager.GetString("BenchmarkSampleCommandDescription", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Cross check term vectors..
/// </summary>
public static string CrossCheckTermVectorsDescription {
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/Resources/Strings.resx
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/Resources/Strings.resx b/src/tools/lucene-cli/Resources/Strings.resx
index 4b1a488..592fe70 100644
--- a/src/tools/lucene-cli/Resources/Strings.resx
+++ b/src/tools/lucene-cli/Resources/Strings.resx
@@ -176,6 +176,63 @@ See this blog post (http://mentaldetritus.blogspot.com/2013/03/compiling-custom-
<data name="AnalysisStempelPatchStemsCommandStemmerTableFilesEncodingDescription" xml:space="preserve">
<value>The encoding to use for the stemmer table files. If not supplied, defaults to UTF-8.</value>
</data>
+ <data name="BenchmarkCommandDescription" xml:space="preserve">
+ <value>Utilities for benchmarking Lucene.Net.</value>
+ </data>
+ <data name="BenchmarkExtractReutersCommandDescription" xml:space="preserve">
+ <value>Splits Reuters SGML documents into simple text files containing: Title, Date, Dateline, Body.</value>
+ </data>
+ <data name="BenchmarkExtractReutersCommandInputDirectoryDescription" xml:space="preserve">
+ <value>Path to Reuters SGML files.</value>
+ </data>
+ <data name="BenchmarkExtractReutersCommandOutputDirectoryDescription" xml:space="preserve">
+ <value>Path to a directory where the output files will be written.</value>
+ </data>
+ <data name="BenchmarkExtractWikipediaCommandDescription" xml:space="preserve">
+ <value>Extracts a downloaded Wikipedia dump into separate files for indexing.</value>
+ </data>
+ <data name="BenchmarkExtractWikipediaCommandDiscardImageOnlyDocsDescription" xml:space="preserve">
+ <value>Tells the extractor to skip WIKI docs that contain only images.</value>
+ </data>
+ <data name="BenchmarkExtractWikipediaCommandInputWikipediaFileDescription" xml:space="preserve">
+ <value>Input path to a Wikipedia XML file.</value>
+ </data>
+ <data name="BenchmarkExtractWikipediaCommandOutputDirectoryDescription" xml:space="preserve">
+ <value>Path to a directory where the output files will be written.</value>
+ </data>
+ <data name="BenchmarkFindQualityQueriesCommandDescription" xml:space="preserve">
+ <value>Suggests quality queries based on index contents. Used for making quality test benchmarks.</value>
+ </data>
+ <data name="BenchmarkRunCommandAlgorithmFileDescription" xml:space="preserve">
+ <value>An algorithm file specifying the parameters of the benchmark to run.</value>
+ </data>
+ <data name="BenchmarkRunCommandDescription" xml:space="preserve">
+ <value>Runs a benchmark based on an algorithm file.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandDescription" xml:space="preserve">
+ <value>Runs a TREC evaluation.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandOutputSubmissionFileDescription" xml:space="preserve">
+ <value>Output submission file for TREC evaluation.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandQueryOnDescriptionDescription" xml:space="preserve">
+ <value>Use description field in query.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandQueryOnNarrativeDescription" xml:space="preserve">
+ <value>Use narrative field in query.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandQueryOnTitleDescription" xml:space="preserve">
+ <value>Use title field in query. This flag will automatically be on if no other field is specified.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandQueryRelevanceFileDescription" xml:space="preserve">
+ <value>Input file conataining relevance judgements.</value>
+ </data>
+ <data name="BenchmarkRunTrecEvalCommandTopicsFileDescription" xml:space="preserve">
+ <value>Input file containing queries.</value>
+ </data>
+ <data name="BenchmarkSampleCommandDescription" xml:space="preserve">
+ <value>Sample of a performance test written programatically instead of using an algorithm file.</value>
+ </data>
<data name="CrossCheckTermVectorsDescription" xml:space="preserve">
<value>Cross check term vectors.</value>
</data>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/RootCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/RootCommand.cs b/src/tools/lucene-cli/commands/RootCommand.cs
index c0d0b93..ff84328 100644
--- a/src/tools/lucene-cli/commands/RootCommand.cs
+++ b/src/tools/lucene-cli/commands/RootCommand.cs
@@ -25,10 +25,8 @@
{
this.Description = FromResource("RootCommandDescription");
- //// LUCENENET TODO: Fix this to use CommandLine stuff...
- //this.VersionOption("-v|--version", typeof(Program).GetTypeInfo().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion);
-
this.Commands.Add(new AnalysisCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkCommand.Configuration(options));
this.Commands.Add(new IndexCommand.Configuration(options));
this.Commands.Add(new LockCommand.Configuration(options));
this.Commands.Add(new DemoCommand.Configuration(options));
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/BenchmarkCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/BenchmarkCommand.cs b/src/tools/lucene-cli/commands/benchmark/BenchmarkCommand.cs
new file mode 100644
index 0000000..73a71b3
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/BenchmarkCommand.cs
@@ -0,0 +1,51 @@
+using Lucene.Net.Benchmarks.ByTask;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => Benchmark.Main(args);
+
+ this.Name = "benchmark";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.Commands.Add(new BenchmarkExtractReutersCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkExtractWikipediaCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkFindQualityQueriesCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkRunCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkRunTrecEvalCommand.Configuration(options));
+ this.Commands.Add(new BenchmarkSampleCommand.Configuration(options));
+
+ this.OnExecute(() => new BenchmarkCommand().Run(this));
+ }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ cmd.ShowHelp();
+ return 1;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-extract-reuters/BenchmarkExtractReutersCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-extract-reuters/BenchmarkExtractReutersCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-extract-reuters/BenchmarkExtractReutersCommand.cs
new file mode 100644
index 0000000..1cb226d
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-extract-reuters/BenchmarkExtractReutersCommand.cs
@@ -0,0 +1,52 @@
+using Lucene.Net.Benchmarks.Utils;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkExtractReutersCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => ExtractReuters.Main(args);
+
+ this.Name = "extract-reuters";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.Argument("<INPUT_DIRECTORY>", FromResource("InputDirectoryDescription"));
+ this.Argument("<OUTPUT_DIRECTORY>", FromResource("OutputDirectoryDescription"));
+
+ this.OnExecute(() => new BenchmarkExtractReutersCommand().Run(this));
+ }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ if (!cmd.ValidateArguments(2))
+ {
+ return 1;
+ }
+
+ cmd.Main(cmd.GetNonNullArguments());
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-extract-wikipedia/BenchmarkExtractWikipediaCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-extract-wikipedia/BenchmarkExtractWikipediaCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-extract-wikipedia/BenchmarkExtractWikipediaCommand.cs
new file mode 100644
index 0000000..c16fc7f
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-extract-wikipedia/BenchmarkExtractWikipediaCommand.cs
@@ -0,0 +1,72 @@
+using Lucene.Net.Benchmarks.Utils;
+using Lucene.Net.Cli.CommandLine;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkExtractWikipediaCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => ExtractWikipedia.Main(args);
+
+ this.Name = "extract-wikipedia";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.InputWikipediaFile = this.Argument("<INPUT_WIKIPEDIA_FILE>", FromResource("InputWikipediaFileDescription"));
+ this.OutputDirectory = this.Argument("<OUTPUT_DIRECTORY>", FromResource("OutputDirectoryDescription"));
+ this.DiscardImageOnlyDocs = this.Option("-d|--discard-image-only-docs", FromResource("DiscardImageOnlyDocsDescription"), CommandOptionType.NoValue);
+
+ this.OnExecute(() => new BenchmarkExtractWikipediaCommand().Run(this));
+ }
+
+ public CommandArgument InputWikipediaFile { get; set; }
+ public CommandArgument OutputDirectory { get; set; }
+ public CommandOption DiscardImageOnlyDocs { get; set; }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ if (!cmd.ValidateArguments(2))
+ {
+ return 1;
+ }
+
+ var args = new List<string>();
+ var input = cmd as Configuration;
+
+ args.Add("--input");
+ args.Add(input.InputWikipediaFile.Value);
+ args.Add("--output");
+ args.Add(input.OutputDirectory.Value);
+
+ if (input.DiscardImageOnlyDocs.HasValue())
+ {
+ args.Add("--discardImageOnlyDocs");
+ }
+
+ cmd.Main(args.ToArray());
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-find-quality-queries/BenchmarkFindQualityQueriesCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-find-quality-queries/BenchmarkFindQualityQueriesCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-find-quality-queries/BenchmarkFindQualityQueriesCommand.cs
new file mode 100644
index 0000000..81ad29b
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-find-quality-queries/BenchmarkFindQualityQueriesCommand.cs
@@ -0,0 +1,51 @@
+using Lucene.Net.Benchmarks.Quality.Trec;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkFindQualityQueriesCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => QueryDriver.Main(args);
+
+ this.Name = "find-quality-queries";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.Arguments.Add(new IndexDirectoryArgument(required: false));
+
+ this.OnExecute(() => new BenchmarkFindQualityQueriesCommand().Run(this));
+ }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ if (!cmd.ValidateArguments(1))
+ {
+ return 1;
+ }
+
+ cmd.Main(cmd.GetNonNullArguments());
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-run-trec-eval/BenchmarkRunTrecEvalCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-run-trec-eval/BenchmarkRunTrecEvalCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-run-trec-eval/BenchmarkRunTrecEvalCommand.cs
new file mode 100644
index 0000000..0d64231
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-run-trec-eval/BenchmarkRunTrecEvalCommand.cs
@@ -0,0 +1,78 @@
+using Lucene.Net.Benchmarks.Quality.Trec;
+using Lucene.Net.Cli.CommandLine;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkRunTrecEvalCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => QueryDriver.Main(args);
+
+ this.Name = "run-trec-eval";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.Argument("<INPUT_TOPICS_FILE>", FromResource("TopicsFileDescription"));
+ this.Argument("<INPUT_QUERY_RELEVANCE_FILE>", FromResource("QueryRelevanceFileDescription"));
+ this.Argument("<OUTPUT_SUBMISSION_FILE>", FromResource("OutputSubmissionFileDescription"));
+ this.Arguments.Add(new IndexDirectoryArgument(required: true));
+ this.QueryOnTitle = this.Option("-t|--query-on-title", FromResource("QueryOnTitleDescription"), CommandOptionType.NoValue);
+ this.QueryOnDescription = this.Option("-d|--query-on-description", FromResource("QueryOnDescriptionDescription"), CommandOptionType.NoValue);
+ this.QueryOnNarrative = this.Option("-n|--query-on-narrative", FromResource("QueryOnNarrativeDescription"), CommandOptionType.NoValue);
+
+ this.OnExecute(() => new BenchmarkRunTrecEvalCommand().Run(this));
+ }
+
+ public CommandOption QueryOnTitle { get; set; }
+ public CommandOption QueryOnDescription { get; set; }
+ public CommandOption QueryOnNarrative { get; set; }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ if (!cmd.ValidateArguments(4))
+ {
+ return 1;
+ }
+
+ var input = cmd as Configuration;
+ var args = new List<string>(cmd.GetNonNullArguments());
+
+ string querySpec = string.Empty;
+
+ if (input.QueryOnTitle.HasValue())
+ querySpec += "T";
+ if (input.QueryOnDescription.HasValue())
+ querySpec += "D";
+ if (input.QueryOnNarrative.HasValue())
+ querySpec += "N";
+
+ if (!string.IsNullOrEmpty(querySpec))
+ args.Add(querySpec);
+
+ cmd.Main(args.ToArray());
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-run/BenchmarkRunCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-run/BenchmarkRunCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-run/BenchmarkRunCommand.cs
new file mode 100644
index 0000000..4f29f6f
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-run/BenchmarkRunCommand.cs
@@ -0,0 +1,50 @@
+using Lucene.Net.Benchmarks.ByTask;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkRunCommand : ICommand
+ {
+ public class Configuration : ConfigurationBase
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => Benchmark.Main(args);
+
+ this.Name = "run";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+ this.Argument("<ALGORITHM_FILE>", FromResource("AlgorithmFileDescription"));
+
+ this.OnExecute(() => new BenchmarkRunCommand().Run(this));
+ }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ if (!cmd.ValidateArguments(1))
+ {
+ return 1;
+ }
+
+ cmd.Main(cmd.GetNonNullArguments());
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/benchmark/benchmark-sample/BenchmarkSampleCommand.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/benchmark/benchmark-sample/BenchmarkSampleCommand.cs b/src/tools/lucene-cli/commands/benchmark/benchmark-sample/BenchmarkSampleCommand.cs
new file mode 100644
index 0000000..c8a3490
--- /dev/null
+++ b/src/tools/lucene-cli/commands/benchmark/benchmark-sample/BenchmarkSampleCommand.cs
@@ -0,0 +1,53 @@
+using Lucene.Net.Benchmarks.ByTask.Programmatic;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Cli
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ public class BenchmarkSampleCommand : ICommand
+ {
+ public class Configuration : DemoConfiguration
+ {
+ public Configuration(CommandLineOptions options)
+ {
+ this.Main = (args) => Sample.Main(args);
+
+ this.Name = "sample";
+ this.Description = FromResource("Description");
+ this.ExtendedHelpText = FromResource("ExtendedHelpText");
+
+ this.OnExecute(() => new BenchmarkSampleCommand().Run(this));
+ }
+
+ public override IEnumerable<string> SourceCodeFiles
+ {
+ get
+ {
+ return new string[] { "Sample.cs" };
+ }
+ }
+ }
+
+ public int Run(ConfigurationBase cmd)
+ {
+ cmd.Main(new string[0]);
+ return 0;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/commands/demo/DemoConfiguration.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/commands/demo/DemoConfiguration.cs b/src/tools/lucene-cli/commands/demo/DemoConfiguration.cs
index d1f4eda..b2592c3 100644
--- a/src/tools/lucene-cli/commands/demo/DemoConfiguration.cs
+++ b/src/tools/lucene-cli/commands/demo/DemoConfiguration.cs
@@ -30,6 +30,7 @@ namespace Lucene.Net.Cli
protected DemoConfiguration()
{
+
this.viewSourceOption = this.Option(
"-src|--view-source-code",
Resources.Strings.ViewSourceCodeDescription,
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/extract-reuters.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/extract-reuters.md b/src/tools/lucene-cli/docs/benchmark/extract-reuters.md
new file mode 100644
index 0000000..d63b2d3
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/extract-reuters.md
@@ -0,0 +1,31 @@
+# extract-reuters
+
+### Name
+
+`benchmark-extract-reuters` - Splits Reuters SGML documents into simple text files containing: Title, Date, Dateline, Body.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark extract-reuters [?|-h|--help]</code>
+
+### Arguments
+
+`INPUT_DIRECTORY`
+
+Path to Reuters SGML files.
+
+`OUTPUT_DIRECTORY`
+
+Path to a directory where the output files will be written.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+Extracts the reuters SGML files in the `z:\input` directory and places the content in the `z:\output` directory.
+
+<code>dotnet lucene-cli.dll benchmark extract-reuters z:\input z:\output</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/extract-wikipedia.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/extract-wikipedia.md b/src/tools/lucene-cli/docs/benchmark/extract-wikipedia.md
new file mode 100644
index 0000000..1d48911
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/extract-wikipedia.md
@@ -0,0 +1,35 @@
+# extract-wikipedia
+
+### Name
+
+`benchmark-extract-wikipedia` - Extracts a downloaded Wikipedia dump into separate files for indexing.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark extract-wikipedia [?|-h|--help]</code>
+
+### Arguments
+
+`INPUT_WIKIPEDIA_FILE`
+
+Input path to a Wikipedia XML file.
+
+`OUTPUT_DIRECTORY`
+
+Path to a directory where the output files will be written.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-d|--discard-image-only-docs`
+
+Tells the extractor to skip WIKI docs that contain only images.
+
+### Example
+
+Extracts the `c:\wiki.xml` file into the `c:\out` directory, skipping any docs that only contain images.
+
+<code>dotnet lucene-cli.dll benchmark extract-wikipedia c:\wiki.xml c:\out -d</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/find-quality-queries.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/find-quality-queries.md b/src/tools/lucene-cli/docs/benchmark/find-quality-queries.md
new file mode 100644
index 0000000..c4e615b
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/find-quality-queries.md
@@ -0,0 +1,27 @@
+# find-quality-queries
+
+### Name
+
+`benchmark-find-quality-queries` - Suggests quality queries based on index contents. Used for making quality test benchmarks.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark find-quality-queries [?|-h|--help]</code>
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+Path to the index.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+Finds quality queries on the `c:\lucene-index` index directory.
+
+<code>dotnet lucene-cli.dll benchmark find-quality-queries c:\lucene-index</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/index.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/index.md b/src/tools/lucene-cli/docs/benchmark/index.md
new file mode 100644
index 0000000..66d4e04
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/index.md
@@ -0,0 +1,14 @@
+# benchmark
+
+## Description
+
+Utilities for benchmarking Lucene.Net.
+
+## Commands
+
+- [extract-reuters](extract-reuters.md)
+- [extract-wikipedia](extract-wikipedia.md)
+- [find-quality-queries](find-quality-queries.md)
+- [run](run.md)
+- [run-trec-eval](run-trec-eval.md)
+- [sample](sample.md)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/run-trec-eval.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/run-trec-eval.md b/src/tools/lucene-cli/docs/benchmark/run-trec-eval.md
new file mode 100644
index 0000000..5d5960b
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/run-trec-eval.md
@@ -0,0 +1,51 @@
+# run-trec-eval
+
+### Name
+
+`benchmark-run-trec-eval` - Runs a TREC evaluation.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark run-trec-eval [?|-h|--help]</code>
+
+### Arguments
+
+`INPUT_TOPICS_FILE`
+
+Input file containing queries.
+
+`INPUT_QUERY_RELEVANCE_FILE`
+
+Input file conataining relevance judgements.
+
+`OUTPUT_SUBMISSION_FILE`
+
+Output submission file for TREC evaluation.
+
+`INDEX_DIRECTORY`
+
+The index directory.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-t|--query-on-title`
+
+Use title field in query. This flag will automatically be on if no other field is specified.
+
+`-d|--query-on-description`
+
+Use description field in query.
+
+`-n|--query-on-narrative`
+
+Use narrative field in query.
+
+### Example
+
+Runs a TREC evaluation on the `c:\topics` queries file and the `c:\queries` relevance judgements on the `c:\lucene-index` index using the description and narrative fields and places the output in `c:\output.txt`.
+
+<code>dotnet lucene-cli.dll benchmark run-trec-eval c:\topics.txt c:\queries.txt c:\submissions.txt c:\output.txt c:\lucene-index -d -n</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/run.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/run.md b/src/tools/lucene-cli/docs/benchmark/run.md
new file mode 100644
index 0000000..8042307
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/run.md
@@ -0,0 +1,31 @@
+# run
+
+### Name
+
+`benchmark-run` - Runs a benchmark based on an algorithm file.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark run [?|-h|--help]</code>
+
+### Arguments
+
+`ALGORITHM_FILE`
+
+An algorithm file specifying the parameters of the benchmark to run.
+
+`OUTPUT_DIRECTORY`
+
+Path to a directory where the output files will be written.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+Runs a benchmark on the `c:\check.alg` algorithm file.
+
+<code>dotnet lucene-cli.dll benchmark run c:\check.alg</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/docs/benchmark/sample.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/benchmark/sample.md b/src/tools/lucene-cli/docs/benchmark/sample.md
new file mode 100644
index 0000000..7245af5
--- /dev/null
+++ b/src/tools/lucene-cli/docs/benchmark/sample.md
@@ -0,0 +1,29 @@
+# sample
+
+### Name
+
+`benchmark-sample` - Sample of a performance test written programatically instead of using an algorithm file.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll benchmark sample [-src|--view-source-code] [-out|--output-source-code] [?|-h|--help]</code>
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-src|--view-source-code`
+
+Prints the source code to the console. Use `SPACE` or `n` to move to the next page of text, `ENTER` to scroll to the next line of text, `q` or `x` to quit.
+
+`-out|--output-source-code <DIRECTORY>`
+
+Outputs the source code to the specified directory.
+
+### Example
+
+Runs the sample.
+
+<code>dotnet lucene-cli.dll benchmark sample</code>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4a8507a1/src/tools/lucene-cli/project.json
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/project.json b/src/tools/lucene-cli/project.json
index 767a705..a33bdb4 100644
--- a/src/tools/lucene-cli/project.json
+++ b/src/tools/lucene-cli/project.json
@@ -10,6 +10,7 @@
},
"embed": {
"include": [
+ "../../Lucene.Net.Benchmark/ByTask/Programmatic/Sample.cs",
"../../Lucene.Net.Demo/*.cs",
"../../Lucene.Net.Demo/Facet/*.cs"
]
@@ -21,6 +22,7 @@
"Lucene.Net.Analysis.Common": "4.8.0",
"Lucene.Net.Analysis.Kuromoji": "4.8.0",
"Lucene.Net.Analysis.Stempel": "4.8.0",
+ "Lucene.Net.Benchmark": "4.8.0",
"Lucene.Net.Demo": "4.8.0",
"Lucene.Net.Expressions": "4.8.0",
"Lucene.Net.Facet": "4.8.0",