lucene-cli: Added Markdown documentation, and extended help text for many 
commands. Fixed IndexSplitCommand because MultiPassIndexSplitter doesn't make 
number of segments an optional argument.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/70f15595
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/70f15595
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/70f15595

Branch: refs/heads/master
Commit: 70f15595701a7e7f2803aeb3626a23a6fd6c731d
Parents: ea6ec0f
Author: Shad Storhaug <[email protected]>
Authored: Mon Jul 10 11:50:42 2017 +0700
Committer: Shad Storhaug <[email protected]>
Committed: Mon Jul 10 11:50:42 2017 +0700

----------------------------------------------------------------------
 .../Commands/Index/IndexFixCommandTest.cs       |   4 +-
 .../Commands/Index/IndexSplitCommandTest.cs     |  34 +++++
 .../lucene-cli/Resources/Strings.Designer.cs    | 130 +++++++++++++------
 src/tools/lucene-cli/Resources/Strings.resx     |  92 ++++++++-----
 .../lucene-cli/arguments/SegmentsArgument.cs    |   2 +-
 .../index/index-check/IndexCheckCommand.cs      |   1 +
 .../IndexCopySegmentsCommand.cs                 |   3 +-
 .../index-extract-cfs/IndexExtractCfsCommand.cs |   1 +
 .../index/index-list-cfs/IndexListCfsCommand.cs |   1 +
 .../IndexListHighFreqTerms.cs                   |   2 +-
 .../IndexSegmentListCommand.cs                  |   1 +
 .../IndexListTaxonomyStatsCommand.cs            |   1 +
 .../IndexListTermInfoCommand.cs                 |   1 +
 .../index/index-split/IndexSplitCommand.cs      |   8 +-
 .../lock-stress-test/LockStressTestCommand.cs   |   9 +-
 src/tools/lucene-cli/docs/analysis/index.md     |  10 ++
 .../docs/analysis/stempel-compile-stems.md      |  37 ++++++
 .../docs/analysis/stempel-patch-stems.md        |  34 +++++
 .../lucene-cli/docs/demo/associations-facets.md |  27 ++++
 .../lucene-cli/docs/demo/distance-facets.md     |  27 ++++
 .../docs/demo/expression-aggregation-facets.md  |  27 ++++
 src/tools/lucene-cli/docs/demo/index-files.md   |  51 ++++++++
 src/tools/lucene-cli/docs/demo/index.md         |  17 +++
 .../docs/demo/multi-category-lists-facets.md    |  28 ++++
 src/tools/lucene-cli/docs/demo/range-facets.md  |  27 ++++
 src/tools/lucene-cli/docs/demo/search-files.md  |  72 ++++++++++
 src/tools/lucene-cli/docs/demo/simple-facets.md |  27 ++++
 .../docs/demo/simple-sorted-set-facets.md       |  29 +++++
 src/tools/lucene-cli/docs/index.md              |  25 ++++
 src/tools/lucene-cli/docs/index/check.md        |  55 ++++++++
 .../lucene-cli/docs/index/copy-segments.md      |  40 ++++++
 .../lucene-cli/docs/index/delete-segments.md    |  35 +++++
 src/tools/lucene-cli/docs/index/extract-cfs.md  |  42 ++++++
 src/tools/lucene-cli/docs/index/fix.md          |  54 ++++++++
 src/tools/lucene-cli/docs/index/index.md        |  23 ++++
 src/tools/lucene-cli/docs/index/list-cfs.md     |  36 +++++
 .../docs/index/list-high-freq-terms.md          |  49 +++++++
 .../lucene-cli/docs/index/list-segments.md      |  32 +++++
 .../docs/index/list-taxonomy-stats.md           |  38 ++++++
 .../lucene-cli/docs/index/list-term-info.md     |  40 ++++++
 src/tools/lucene-cli/docs/index/merge.md        |  36 +++++
 src/tools/lucene-cli/docs/index/split.md        |  54 ++++++++
 src/tools/lucene-cli/docs/index/upgrade.md      |  52 ++++++++
 src/tools/lucene-cli/docs/lock/index.md         |  10 ++
 src/tools/lucene-cli/docs/lock/stress-test.md   |  55 ++++++++
 src/tools/lucene-cli/docs/lock/verify-server.md |  35 +++++
 46 files changed, 1332 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexFixCommandTest.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexFixCommandTest.cs 
b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexFixCommandTest.cs
index 29a2b4c..d153f2d 100644
--- a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexFixCommandTest.cs
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexFixCommandTest.cs
@@ -64,7 +64,7 @@ namespace Lucene.Net.Cli.Commands
                 AssertCommandTranslation(
                     string.Join(" ", requiredArg.Select(x => 
x.InputPattern).ToArray()),
                     requiredArg.SelectMany(x => x.Output)
-                    // Special case - the -fix option must be specified when 
--dry-run is not
+                    // Special case: the -fix option must be specified when 
--dry-run is not
                     .Concat(new string[] { "-fix" }).ToArray());
             }
 
@@ -74,7 +74,7 @@ namespace Lucene.Net.Cli.Commands
                 {
                     string command = string.Join(" ", requiredArg.Select(x => 
x.InputPattern).Union(optionalArg.Select(x => x.InputPattern).ToArray()));
                     string[] expected = requiredArg.SelectMany(x => x.Output)
-                        // Special case - the -fix option must be specified 
when --dry-run is not
+                        // Special case: the -fix option must be specified 
when --dry-run is not
                         .Concat(command.Contains("--dry-run") ? new string[0] 
: new string[] { "-fix" })
                         .Union(optionalArg.SelectMany(x => 
x.Output)).ToArray();
                     AssertCommandTranslation(command, expected);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexSplitCommandTest.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexSplitCommandTest.cs 
b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexSplitCommandTest.cs
index c5a9017..a6a1a95 100644
--- a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexSplitCommandTest.cs
+++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexSplitCommandTest.cs
@@ -1,5 +1,6 @@
 using NUnit.Framework;
 using System.Collections.Generic;
+using System.Linq;
 
 namespace Lucene.Net.Cli.Commands
 {
@@ -53,6 +54,39 @@ namespace Lucene.Net.Cli.Commands
         }
 
         [Test]
+        public override void TestAllValidCombinations()
+        {
+            var requiredArgs = 
GetRequiredArgs().ExpandArgs().RequiredParameters();
+            var optionalArgs = 
GetOptionalArgs().ExpandArgs().OptionalParameters();
+
+            foreach (var requiredArg in requiredArgs)
+            {
+                AssertCommandTranslation(
+                    string.Join(" ", requiredArg.Select(x => 
x.InputPattern).ToArray()),
+                    requiredArg.SelectMany(x => x.Output)
+                    // Special case: the -num option must be specified when -n 
is not
+                    // because in MultiPassIndexSplitter it is not optional, 
so we are patching
+                    // it in our command to make 2 the default.
+                    .Concat(new string[] { "-num", "2" }).ToArray());
+            }
+
+            foreach (var requiredArg in requiredArgs)
+            {
+                foreach (var optionalArg in optionalArgs)
+                {
+                    string command = string.Join(" ", requiredArg.Select(x => 
x.InputPattern).Union(optionalArg.Select(x => x.InputPattern).ToArray()));
+                    string[] expected = requiredArg.SelectMany(x => x.Output)
+                        // Special case: the -num option must be specified 
when -n is not
+                        // because in MultiPassIndexSplitter it is not 
optional, so we are patching
+                        // it in our command to make 2 the default.
+                        .Concat(command.Contains("-n") ? new string[0] : new 
string[] { "-num", "2" })
+                        .Union(optionalArg.SelectMany(x => 
x.Output)).ToArray();
+                    AssertCommandTranslation(command, expected);
+                }
+            }
+        }
+
+        [Test]
         public virtual void TestNotEnoughArguments()
         {
             AssertConsoleOutput("", FromResource("NotEnoughArguments", 2));

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/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 cb790ae..5d1fa93 100644
--- a/src/tools/lucene-cli/Resources/Strings.Designer.cs
+++ b/src/tools/lucene-cli/Resources/Strings.Designer.cs
@@ -87,7 +87,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The encoding to use for 
the stemmer table files..
+        ///    Looks up a localized string similar to The encoding to use for 
the stemmer table files. If not supplied, defaults to UTF-8..
         /// </summary>
         public static string 
AnalysisStempelCompileStemsCommandStemmerTableFilesEncodingDescription {
             get {
@@ -123,7 +123,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The encoding to use for 
the stemmer table files..
+        ///    Looks up a localized string similar to The encoding to use for 
the stemmer table files. If not supplied, defaults to UTF-8..
         /// </summary>
         public static string 
AnalysisStempelPatchStemsCommandStemmerTableFilesEncodingDescription {
             get {
@@ -375,6 +375,17 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
+        ///    Looks up a localized string similar to Basic tool to check the 
health of an index. 
+        ///
+        ///As this tool checks every byte in the index, on a large index it 
can take quite a long time to run..
+        /// </summary>
+        public static string IndexCheckCommandExtendedHelpText {
+            get {
+                return 
ResourceManager.GetString("IndexCheckCommandExtendedHelpText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///    Looks up a localized string similar to Only check the specified 
segment(s). This can be specified multiple times, to check more than one 
segment, eg --segment _2 --segment _a..
         /// </summary>
         public static string IndexCheckCommandSegmentsDescription {
@@ -492,7 +503,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Lists sub-files from a 
.cfs compound file..
+        ///    Looks up a localized string similar to Extracts sub-files from 
a .cfs compound file..
         /// </summary>
         public static string IndexExtractCfsCommandDescription {
             get {
@@ -501,7 +512,9 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The .cfs compound file 
format is created using the CompoundFileDirectory from Lucene.Net.Misc..
+        ///    Looks up a localized string similar to Extracts `.cfs` compound 
files (that were created using the CompoundFileDirectory from Lucene.Net.Misc) 
to the current working directory.
+        ///
+        ///In order to make the extracted version of the index work, you have 
to copy the segments file from the compound index into the directory where the 
extracted files are stored..
         /// </summary>
         public static string IndexExtractCfsCommandExtendedHelpText {
             get {
@@ -528,7 +541,11 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to WARNING: This command 
should only be used on an emergency basis as it will cause documents (perhaps 
many) to be permanently removed from the index. Always make a backup copy of 
your index before running this! Do not run this tool on an index that is 
actively being written to. You have been warned!.
+        ///    Looks up a localized string similar to  Basic tool to check and 
fix the health of an index and write a new segments file that removes reference 
to problematic segments.
+        ///
+        ///As this tool checks every byte in the index, on a large index it 
can take quite a long time to run. 
+        ///
+        ///WARNING: This command should only be used on an emergency basis as 
it will cause documents (perhaps many) to be permanently removed from the 
index. Always make a backup copy of your index before running this! Do not run 
this tool on an index that is actively being written to. [rest of string was 
truncated]&quot;;.
         /// </summary>
         public static string IndexFixCommandExtendedHelpText {
             get {
@@ -546,7 +563,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Extracts sub-files out 
of a .cfs compound file..
+        ///    Looks up a localized string similar to Lists sub-files out of a 
.cfs compound file..
         /// </summary>
         public static string IndexListCfsCommandDescription {
             get {
@@ -555,7 +572,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The .cfs compound file 
format is created using the CompoundFileDirectory from Lucene.Net.Misc..
+        ///    Looks up a localized string similar to Prints the filename and 
size of each file within a given `.cfs` compound file. The .cfs compound file 
format is created using the CompoundFileDirectory from Lucene.Net.Misc..
         /// </summary>
         public static string IndexListCfsCommandExtendedHelpText {
             get {
@@ -564,7 +581,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Extracts the top n most 
frequent terms by document frequency..
+        ///    Looks up a localized string similar to Lists the top N most 
frequent terms by document frequency..
         /// </summary>
         public static string IndexListHighFreqTermsCommandDescription {
             get {
@@ -573,7 +590,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Extracts the top n most 
frequent terms (by document frequency) from an index and reports thier document 
frequency..
+        ///    Looks up a localized string similar to Extracts the top N most 
frequent terms (by document frequency) from an index and reports thier document 
frequency..
         /// </summary>
         public static string IndexListHighFreqTermsCommandExtendedHelpText {
             get {
@@ -618,6 +635,15 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
+        ///    Looks up a localized string similar to After running this 
command to view segments, use copy-segments to copy segments from one index 
directory to another or delete-segments to remove segments from an index..
+        /// </summary>
+        public static string IndexListSegmentsExtendedHelpText {
+            get {
+                return 
ResourceManager.GetString("IndexListSegmentsExtendedHelpText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///    Looks up a localized string similar to Displays the taxonomy 
statistical information for a taxonomy index..
         /// </summary>
         public static string IndexListTaxonomyStatsCommandDescription {
@@ -627,7 +653,16 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Recursively lists all 
descendent nodes..
+        ///    Looks up a localized string similar to Prints how many ords are 
under each dimension..
+        /// </summary>
+        public static string IndexListTaxonomyStatsCommandExtendedHelpText {
+            get {
+                return 
ResourceManager.GetString("IndexListTaxonomyStatsCommandExtendedHelpText", 
resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///    Looks up a localized string similar to Recursively lists all 
descendant nodes..
         /// </summary>
         public static string IndexListTaxonomyStatsCommandShowTreeDescription {
             get {
@@ -699,7 +734,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Output directory to 
merge the indexes into..
+        ///    Looks up a localized string similar to The output directory to 
merge the input indexes into..
         /// </summary>
         public static string IndexMergeCommandOutputDirectoryDescription {
             get {
@@ -717,7 +752,20 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Path to input index. 
Multiple values can be provided separated by a space..
+        ///    Looks up a localized string similar to  Splits the input index 
into multiple equal parts. The method employed here uses 
IndexWriter.AddIndexes(IndexReader[]) where the input data comes from the input 
index with artificially applied deletes to the document ids that fall outside 
the selected partition.
+        ///
+        ///Deletes are only applied to a buffered list of deleted documents 
and don&apos;t affect the source index. This tool works also with read-only 
indexes.
+        ///
+        ///The disadvantage of this tool is that source index needs to be read 
as many times as there are part [rest of string was truncated]&quot;;.
+        /// </summary>
+        public static string IndexSplitCommandExtendedHelpText {
+            get {
+                return 
ResourceManager.GetString("IndexSplitCommandExtendedHelpText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///    Looks up a localized string similar to The path of the source 
index, which can have deletions and can have multiple segments (or multiple 
readers). Multiple values can be supplied separated by a space..
         /// </summary>
         public static string IndexSplitCommandInputDirectoryDescription {
             get {
@@ -726,7 +774,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The number of parts to 
produce..
+        ///    Looks up a localized string similar to The number of parts 
(output indices) to produce. If omitted, defaults to 2..
         /// </summary>
         public static string IndexSplitCommandNumberOfPartsDescription {
             get {
@@ -744,7 +792,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Sequential docid-range 
split..
+        ///    Looks up a localized string similar to Sequential doc-id range 
split (default is round-robin)..
         /// </summary>
         public static string IndexSplitCommandSequentialDescription {
             get {
@@ -771,7 +819,11 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to  This tool keeps only 
the last commit in an index; for this reason, if the incoming index has more 
than one commit, the tool refuses to run by default. Specify 
--delete-prior-commits to override this, allowing the tool to delete all but 
the last commit. Specify an FSDirectory implementation through the 
--directory-type option to force its use. If not qualified by an AssemblyName, 
the Lucene.Net.dll assembly will be used. WARNING: This tool may reorder 
document IDs! Also, ensure you are using the correct vers [rest of string was 
truncated]&quot;;.
+        ///    Looks up a localized string similar to  This tool keeps only 
the last commit in an index; for this reason, if the incoming index has more 
than one commit, the tool refuses to run by default. Specify 
--delete-prior-commits to override this, allowing the tool to delete all but 
the last commit. 
+        ///
+        ///Specify an FSDirectory implementation through the --directory-type 
option to force its use. If not qualified by an AssemblyName, the 
Lucene.Net.dll assembly will be used. 
+        ///
+        ///WARNING: This tool may reorder document IDs! Be sure to make a 
backup of your in [rest of string was truncated]&quot;;.
         /// </summary>
         public static string IndexUpgradeCommandExtendedHelpText {
             get {
@@ -789,16 +841,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Number of locking tries..
-        /// </summary>
-        public static string LockStressTestCommandCountDescription {
-            get {
-                return 
ResourceManager.GetString("LockStressTestCommandCountDescription", 
resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///    Looks up a localized string similar to Simple standalone tool 
that forever acquires &amp; releases a lock using a specific LockFactory..
+        ///    Looks up a localized string similar to Simple tool that forever 
acquires and releases a lock using a specific LockFactory..
         /// </summary>
         public static string LockStressTestCommandDescription {
             get {
@@ -807,7 +850,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to You should run multiple 
instances of this process, each with its own unique ID, and each pointing to 
the same lock directory, to verify that locking is working correctly. Make sure 
you are first running LockVerifyServer..
+        ///    Looks up a localized string similar to You should run multiple 
instances of this process, each with its own unique ID, and each pointing to 
the same lock directory, to verify that locking is working correctly. Make sure 
you are first running verify-server..
         /// </summary>
         public static string LockStressTestCommandExtendedHelpText {
             get {
@@ -816,7 +859,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to int value from 0 .. 255 
(should be unique for test process)..
+        ///    Looks up a localized string similar to An integer from 0 - 255 
(should be unique for test process)..
         /// </summary>
         public static string LockStressTestCommandIDDescription {
             get {
@@ -825,25 +868,25 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Path to the lock 
directory (only set for Simple/NativeFSLockFactory)..
+        ///    Looks up a localized string similar to The path to the lock 
directory (only utilized if LOCK_FACTORY_TYPE is set to SimpleFSLockFactory or 
NativeFSLockFactory)..
         /// </summary>
-        public static string LockStressTestCommandLockFactoryNameDescription {
+        public static string LockStressTestCommandLockDirectoryDescription {
             get {
-                return 
ResourceManager.GetString("LockStressTestCommandLockFactoryNameDescription", 
resourceCulture);
+                return 
ResourceManager.GetString("LockStressTestCommandLockDirectoryDescription", 
resourceCulture);
             }
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Primary LockFactory 
class that we will use..
+        ///    Looks up a localized string similar to The primary LockFactory 
implementation that we will use..
         /// </summary>
-        public static string 
LockStressTestCommandLockFactoryTypeNameDescription {
+        public static string LockStressTestCommandLockFactoryTypeDescription {
             get {
-                return 
ResourceManager.GetString("LockStressTestCommandLockFactoryTypeNameDescription",
 resourceCulture);
+                return 
ResourceManager.GetString("LockStressTestCommandLockFactoryTypeDescription", 
resourceCulture);
             }
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Milliseconds to pause 
betweeen each lock obtain/release..
+        ///    Looks up a localized string similar to Milliseconds to pause 
between each lock obtain/release..
         /// </summary>
         public static string LockStressTestCommandSleepTimeMSDescription {
             get {
@@ -852,7 +895,16 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Port that 
LockVerifyServer is listening on..
+        ///    Looks up a localized string similar to Number of locking tries..
+        /// </summary>
+        public static string LockStressTestCommandTriesDescription {
+            get {
+                return 
ResourceManager.GetString("LockStressTestCommandTriesDescription", 
resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///    Looks up a localized string similar to Port that verify-server 
is listening on..
         /// </summary>
         public static string LockStressTestCommandVerfierPortDescription {
             get {
@@ -861,7 +913,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Hostname that 
LockVerifyServer is listening on..
+        ///    Looks up a localized string similar to Hostname or IP address 
that verify-server is listening on..
         /// </summary>
         public static string LockStressTestCommandVerifierHostDescription {
             get {
@@ -870,7 +922,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Simple standalone server 
that must be running when you use VerifyingLockFactory. This server verifies at 
most one process holds the lock at a time..
+        ///    Looks up a localized string similar to Simple server that must 
be running when you use VerifyingLockFactory (or stress-test). This server 
verifies at most one process holds the lock at a time..
         /// </summary>
         public static string LockVerifyServerCommandDescription {
             get {
@@ -879,7 +931,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to Hostname or IP address 
that LockVerifyServer will listen on..
+        ///    Looks up a localized string similar to Hostname or IP address 
that verify-server will listen on..
         /// </summary>
         public static string LockVerifyServerCommandIPHostnameDescription {
             get {
@@ -888,7 +940,7 @@ namespace Lucene.Net.Cli.Resources {
         }
         
         /// <summary>
-        ///    Looks up a localized string similar to The maximum number of 
concurrent clients..
+        ///    Looks up a localized string similar to The maximum number of 
connected clients..
         /// </summary>
         public static string LockVerifyServerCommandMaxClientsDescription {
             get {

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/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 2e4ce2a..64be738 100644
--- a/src/tools/lucene-cli/Resources/Strings.resx
+++ b/src/tools/lucene-cli/Resources/Strings.resx
@@ -127,7 +127,7 @@
     <value>The path to a file containing a stemmer table. Multiple values are 
allowed.</value>
   </data>
   <data 
name="AnalysisStempelCompileStemsCommandStemmerTableFilesEncodingDescription" 
xml:space="preserve">
-    <value>The encoding to use for the stemmer table files.</value>
+    <value>The encoding to use for the stemmer table files. If not supplied, 
defaults to UTF-8.</value>
   </data>
   <data name="AnalysisStempelCompileStemsCommandStemmingAlgorithmDescription" 
xml:space="preserve">
     <value>The name of the desired stemming algorithm to use.</value>
@@ -139,7 +139,7 @@
     <value>The path to a file containing a stemmer table. Multiple values are 
allowed.</value>
   </data>
   <data 
name="AnalysisStempelPatchStemsCommandStemmerTableFilesEncodingDescription" 
xml:space="preserve">
-    <value>The encoding to use for the stemmer table files.</value>
+    <value>The encoding to use for the stemmer table files. If not supplied, 
defaults to UTF-8.</value>
   </data>
   <data name="CrossCheckTermVectorsDescription" xml:space="preserve">
     <value>Cross check term vectors.</value>
@@ -222,6 +222,11 @@
   <data name="IndexCheckCommandDescription" xml:space="preserve">
     <value>Checks an index for problematic segments.</value>
   </data>
+  <data name="IndexCheckCommandExtendedHelpText" xml:space="preserve">
+    <value>Basic tool to check the health of an index. 
+
+As this tool checks every byte in the index, on a large index it can take 
quite a long time to run.</value>
+  </data>
   <data name="IndexCheckCommandSegmentsDescription" xml:space="preserve">
     <value>Only check the specified segment(s). This can be specified multiple 
times, to check more than one segment, eg --segment _2 --segment _a.</value>
   </data>
@@ -262,10 +267,12 @@
     <value>The .cfs compound file containing words to parse.</value>
   </data>
   <data name="IndexExtractCfsCommandDescription" xml:space="preserve">
-    <value>Lists sub-files from a .cfs compound file.</value>
+    <value>Extracts sub-files from a .cfs compound file.</value>
   </data>
   <data name="IndexExtractCfsCommandExtendedHelpText" xml:space="preserve">
-    <value>The .cfs compound file format is created using the 
CompoundFileDirectory from Lucene.Net.Misc.</value>
+    <value>Extracts `.cfs` compound files (that were created using the 
CompoundFileDirectory from Lucene.Net.Misc) to the current working directory.
+
+In order to make the extracted version of the index work, you have to copy the 
segments file from the compound index into the directory where the extracted 
files are stored.</value>
   </data>
   <data name="IndexFixCommandDescription" xml:space="preserve">
     <value>Fixes an index by removing problematic segments.</value>
@@ -274,22 +281,26 @@
     <value>Doesn't change the index, but reports any actions that would be 
taken if this option were not supplied.</value>
   </data>
   <data name="IndexFixCommandExtendedHelpText" xml:space="preserve">
-    <value>WARNING: This command should only be used on an emergency basis as 
it will cause documents (perhaps many) to be permanently removed from the 
index. Always make a backup copy of your index before running this! Do not run 
this tool on an index that is actively being written to. You have been 
warned!</value>
+    <value>Basic tool to check and fix the health of an index and write a new 
segments file that removes reference to problematic segments.
+
+As this tool checks every byte in the index, on a large index it can take 
quite a long time to run. 
+
+WARNING: This command should only be used on an emergency basis as it will 
cause documents (perhaps many) to be permanently removed from the index. Always 
make a backup copy of your index before running this! Do not run this tool on 
an index that is actively being written to. You have been warned!</value>
   </data>
   <data name="IndexListCfsCommandCFSFileNameDescription" xml:space="preserve">
     <value>The .cfs compound file containing words to parse.</value>
   </data>
   <data name="IndexListCfsCommandDescription" xml:space="preserve">
-    <value>Extracts sub-files out of a .cfs compound file.</value>
+    <value>Lists sub-files out of a .cfs compound file.</value>
   </data>
   <data name="IndexListCfsCommandExtendedHelpText" xml:space="preserve">
-    <value>The .cfs compound file format is created using the 
CompoundFileDirectory from Lucene.Net.Misc.</value>
+    <value>Prints the filename and size of each file within a given `.cfs` 
compound file. The .cfs compound file format is created using the 
CompoundFileDirectory from Lucene.Net.Misc.</value>
   </data>
   <data name="IndexListHighFreqTermsCommandDescription" xml:space="preserve">
-    <value>Extracts the top n most frequent terms by document 
frequency.</value>
+    <value>Lists the top N most frequent terms by document frequency.</value>
   </data>
   <data name="IndexListHighFreqTermsCommandExtendedHelpText" 
xml:space="preserve">
-    <value>Extracts the top n most frequent terms (by document frequency) from 
an index and reports thier document frequency.</value>
+    <value>Extracts the top N most frequent terms (by document frequency) from 
an index and reports thier document frequency.</value>
   </data>
   <data name="IndexListHighFreqTermsCommandFieldDescription" 
xml:space="preserve">
     <value>The field to consider. If omitted, considers all fields.</value>
@@ -303,11 +314,17 @@
   <data name="IndexListSegmentsCommandDescription" xml:space="preserve">
     <value>Lists segments in an index.</value>
   </data>
+  <data name="IndexListSegmentsExtendedHelpText" xml:space="preserve">
+    <value>After running this command to view segments, use copy-segments to 
copy segments from one index directory to another or delete-segments to remove 
segments from an index.</value>
+  </data>
   <data name="IndexListTaxonomyStatsCommandDescription" xml:space="preserve">
     <value>Displays the taxonomy statistical information for a taxonomy 
index.</value>
   </data>
+  <data name="IndexListTaxonomyStatsCommandExtendedHelpText" 
xml:space="preserve">
+    <value>Prints how many ords are under each dimension.</value>
+  </data>
   <data name="IndexListTaxonomyStatsCommandShowTreeDescription" 
xml:space="preserve">
-    <value>Recursively lists all descendent nodes.</value>
+    <value>Recursively lists all descendant nodes.</value>
   </data>
   <data name="IndexListTermInfoCommandDescription" xml:space="preserve">
     <value>Gets document frequency and total number of occurrences of a 
term.</value>
@@ -331,22 +348,31 @@
     <value>Two or more source index directories separated by a space.</value>
   </data>
   <data name="IndexMergeCommandOutputDirectoryDescription" 
xml:space="preserve">
-    <value>Output directory to merge the indexes into.</value>
+    <value>The output directory to merge the input indexes into.</value>
   </data>
   <data name="IndexSplitCommandDescription" xml:space="preserve">
     <value>Splits an index into multiple parts.</value>
   </data>
+  <data name="IndexSplitCommandExtendedHelpText" xml:space="preserve">
+    <value>Splits the input index into multiple equal parts. The method 
employed here uses IndexWriter.AddIndexes(IndexReader[]) where the input data 
comes from the input index with artificially applied deletes to the document 
ids that fall outside the selected partition.
+
+Deletes are only applied to a buffered list of deleted documents and don't 
affect the source index. This tool works also with read-only indexes.
+
+The disadvantage of this tool is that source index needs to be read as many 
times as there are parts to be created. The multiple passes may be slow.
+
+NOTE: This tool is unaware of documents added automatically via 
IndexWriter.AddDocuments(IEnumerable&lt;IEnumerable&lt;IIndexableField&gt;&gt;, 
Analyzer) or IndexWriter.UpdateDocuments(Term, 
IEnumerable&lt;IEnumerable&lt;IIndexableField&gt;&gt;, Analyzer), which means 
it can easily break up such document groups.</value>
+  </data>
   <data name="IndexSplitCommandInputDirectoryDescription" xml:space="preserve">
-    <value>Path to input index. Multiple values can be provided separated by a 
space.</value>
+    <value>The path of the source index, which can have deletions and can have 
multiple segments (or multiple readers). Multiple values can be supplied 
separated by a space.</value>
   </data>
   <data name="IndexSplitCommandNumberOfPartsDescription" xml:space="preserve">
-    <value>The number of parts to produce.</value>
+    <value>The number of parts (output indices) to produce. If omitted, 
defaults to 2.</value>
   </data>
   <data name="IndexSplitCommandOutputDirectoryDescription" 
xml:space="preserve">
     <value>Path to output directory to contain partial indexes.</value>
   </data>
   <data name="IndexSplitCommandSequentialDescription" xml:space="preserve">
-    <value>Sequential docid-range split.</value>
+    <value>Sequential doc-id range split (default is round-robin).</value>
   </data>
   <data name="IndexUpgradeCommandDeleteDescription" xml:space="preserve">
     <value>Deletes prior commits.</value>
@@ -355,46 +381,50 @@
     <value>Upgrades all segments of an index from previous Lucene.Net versions 
to the current segment file format.</value>
   </data>
   <data name="IndexUpgradeCommandExtendedHelpText" xml:space="preserve">
-    <value>This tool keeps only the last commit in an index; for this reason, 
if the incoming index has more than one commit, the tool refuses to run by 
default. Specify --delete-prior-commits to override this, allowing the tool to 
delete all but the last commit. Specify an FSDirectory implementation through 
the --directory-type option to force its use. If not qualified by an 
AssemblyName, the Lucene.Net.dll assembly will be used. WARNING: This tool may 
reorder document IDs! Also, ensure you are using the correct version of this 
utility to match your application's version of Lucene.Net.</value>
+    <value>This tool keeps only the last commit in an index; for this reason, 
if the incoming index has more than one commit, the tool refuses to run by 
default. Specify --delete-prior-commits to override this, allowing the tool to 
delete all but the last commit. 
+
+Specify an FSDirectory implementation through the --directory-type option to 
force its use. If not qualified by an AssemblyName, the Lucene.Net.dll assembly 
will be used. 
+
+WARNING: This tool may reorder document IDs! Be sure to make a backup of your 
index before you use this. Also, ensure you are using the correct version of 
this utility to match your application's version of Lucene.Net. This operation 
cannot be reversed.</value>
   </data>
   <data name="LockCommandDescription" xml:space="preserve">
     <value>Utilities for verifying concurrent locking integrity.</value>
   </data>
-  <data name="LockStressTestCommandCountDescription" xml:space="preserve">
-    <value>Number of locking tries.</value>
-  </data>
   <data name="LockStressTestCommandDescription" xml:space="preserve">
-    <value>Simple standalone tool that forever acquires &amp; releases a lock 
using a specific LockFactory.</value>
+    <value>Simple tool that forever acquires and releases a lock using a 
specific LockFactory.</value>
   </data>
   <data name="LockStressTestCommandExtendedHelpText" xml:space="preserve">
-    <value>You should run multiple instances of this process, each with its 
own unique ID, and each pointing to the same lock directory, to verify that 
locking is working correctly. Make sure you are first running 
LockVerifyServer.</value>
+    <value>You should run multiple instances of this process, each with its 
own unique ID, and each pointing to the same lock directory, to verify that 
locking is working correctly. Make sure you are first running 
verify-server.</value>
   </data>
   <data name="LockStressTestCommandIDDescription" xml:space="preserve">
-    <value>int value from 0 .. 255 (should be unique for test process).</value>
+    <value>An integer from 0 - 255 (should be unique for test process).</value>
   </data>
-  <data name="LockStressTestCommandLockFactoryNameDescription" 
xml:space="preserve">
-    <value>Path to the lock directory (only set for 
Simple/NativeFSLockFactory).</value>
+  <data name="LockStressTestCommandLockDirectoryDescription" 
xml:space="preserve">
+    <value>The path to the lock directory (only utilized if LOCK_FACTORY_TYPE 
is set to SimpleFSLockFactory or NativeFSLockFactory).</value>
   </data>
-  <data name="LockStressTestCommandLockFactoryTypeNameDescription" 
xml:space="preserve">
-    <value>Primary LockFactory class that we will use.</value>
+  <data name="LockStressTestCommandLockFactoryTypeDescription" 
xml:space="preserve">
+    <value>The primary LockFactory implementation that we will use.</value>
   </data>
   <data name="LockStressTestCommandSleepTimeMSDescription" 
xml:space="preserve">
-    <value>Milliseconds to pause betweeen each lock obtain/release.</value>
+    <value>Milliseconds to pause between each lock obtain/release.</value>
+  </data>
+  <data name="LockStressTestCommandTriesDescription" xml:space="preserve">
+    <value>Number of locking tries.</value>
   </data>
   <data name="LockStressTestCommandVerfierPortDescription" 
xml:space="preserve">
-    <value>Port that LockVerifyServer is listening on.</value>
+    <value>Port that verify-server is listening on.</value>
   </data>
   <data name="LockStressTestCommandVerifierHostDescription" 
xml:space="preserve">
-    <value>Hostname that LockVerifyServer is listening on.</value>
+    <value>Hostname or IP address that verify-server is listening on.</value>
   </data>
   <data name="LockVerifyServerCommandDescription" xml:space="preserve">
-    <value>Simple standalone server that must be running when you use 
VerifyingLockFactory. This server verifies at most one process holds the lock 
at a time.</value>
+    <value>Simple server that must be running when you use 
VerifyingLockFactory (or stress-test). This server verifies at most one process 
holds the lock at a time.</value>
   </data>
   <data name="LockVerifyServerCommandIPHostnameDescription" 
xml:space="preserve">
-    <value>Hostname or IP address that LockVerifyServer will listen on.</value>
+    <value>Hostname or IP address that verify-server will listen on.</value>
   </data>
   <data name="LockVerifyServerCommandMaxClientsDescription" 
xml:space="preserve">
-    <value>The maximum number of concurrent clients.</value>
+    <value>The maximum number of connected clients.</value>
   </data>
   <data name="NotEnoughArguments" xml:space="preserve">
     <value>{0} arguments are required.</value>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/arguments/SegmentsArgument.cs
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/arguments/SegmentsArgument.cs 
b/src/tools/lucene-cli/arguments/SegmentsArgument.cs
index bf6b0c9..d7a406a 100644
--- a/src/tools/lucene-cli/arguments/SegmentsArgument.cs
+++ b/src/tools/lucene-cli/arguments/SegmentsArgument.cs
@@ -23,7 +23,7 @@ namespace Lucene.Net.Cli
     {
         public SegmentsArgument()
         {
-            Name = "<SEGMENT>[ [<SEGMENT_2] ...[<SEGMENT_N>]]";
+            Name = "<SEGMENT>[ <SEGMENT_2>...]";
             Description = Resources.Strings.SegmentsArgumentDescription;
             MultipleValues = true;
         }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-check/IndexCheckCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-check/IndexCheckCommand.cs 
b/src/tools/lucene-cli/commands/index/index-check/IndexCheckCommand.cs
index 11d9e96..5f216af 100644
--- a/src/tools/lucene-cli/commands/index/index-check/IndexCheckCommand.cs
+++ b/src/tools/lucene-cli/commands/index/index-check/IndexCheckCommand.cs
@@ -37,6 +37,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "check";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Arguments.Add(new IndexDirectoryArgument());
                 this.Options.Add(new VerboseOption());

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-copy-segments/IndexCopySegmentsCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-copy-segments/IndexCopySegmentsCommand.cs
 
b/src/tools/lucene-cli/commands/index/index-copy-segments/IndexCopySegmentsCommand.cs
index 47caa63..d5aa62b 100644
--- 
a/src/tools/lucene-cli/commands/index/index-copy-segments/IndexCopySegmentsCommand.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-copy-segments/IndexCopySegmentsCommand.cs
@@ -29,13 +29,12 @@ namespace Lucene.Net.Cli
 
                 this.Name = "copy-segments";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Argument("<INPUT_DIRECTORY>", 
FromResource("InputDirectoryDescription"));
                 this.Argument("<OUTPUT_DIRECTORY>", 
FromResource("OutputDirectoryDescription"));
                 this.Arguments.Add(new SegmentsArgument() { Description = 
FromResource("SegmentsDescription") });
 
-                this.ExtendedHelpText = FromResource("ExtendedHelpText");
-
                 this.OnExecute(() => new IndexCopySegmentsCommand().Run(this));
             }
         }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-extract-cfs/IndexExtractCfsCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-extract-cfs/IndexExtractCfsCommand.cs
 
b/src/tools/lucene-cli/commands/index/index-extract-cfs/IndexExtractCfsCommand.cs
index 874f6a6..97f7b99 100644
--- 
a/src/tools/lucene-cli/commands/index/index-extract-cfs/IndexExtractCfsCommand.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-extract-cfs/IndexExtractCfsCommand.cs
@@ -30,6 +30,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "extract-cfs";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Argument("<CFS_FILE_NAME>", 
FromResource("CFSFileNameDescription"));
                 this.Options.Add(new DirectoryTypeOption());

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-list-cfs/IndexListCfsCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-list-cfs/IndexListCfsCommand.cs 
b/src/tools/lucene-cli/commands/index/index-list-cfs/IndexListCfsCommand.cs
index 4b05cbb..2084649 100644
--- a/src/tools/lucene-cli/commands/index/index-list-cfs/IndexListCfsCommand.cs
+++ b/src/tools/lucene-cli/commands/index/index-list-cfs/IndexListCfsCommand.cs
@@ -37,6 +37,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "list-cfs";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Argument("<CFS_FILE_NAME>", 
FromResource("CFSFileNameDescription"));
                 this.Options.Add(new DirectoryTypeOption());

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-list-high-freq-terms/IndexListHighFreqTerms.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-list-high-freq-terms/IndexListHighFreqTerms.cs
 
b/src/tools/lucene-cli/commands/index/index-list-high-freq-terms/IndexListHighFreqTerms.cs
index ced2b9d..c4367ea 100644
--- 
a/src/tools/lucene-cli/commands/index/index-list-high-freq-terms/IndexListHighFreqTerms.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-list-high-freq-terms/IndexListHighFreqTerms.cs
@@ -38,7 +38,7 @@ namespace Lucene.Net.Cli
                     FromResource("TotalTermFrequencyDescription"),
                     CommandOptionType.NoValue);
                 this.NumberOfTermsOption = this.Option(
-                    "-n|--number-of-terms <NUMBER_OF_TERMS>",
+                    "-n|--number-of-terms <NUMBER>",
                     FromResource("NumberOfTermsDescription"),
                     CommandOptionType.SingleValue);
                 this.FieldOption = this.Option(

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-list-segments/IndexSegmentListCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-list-segments/IndexSegmentListCommand.cs
 
b/src/tools/lucene-cli/commands/index/index-list-segments/IndexSegmentListCommand.cs
index ca4d2dc..1e636b5 100644
--- 
a/src/tools/lucene-cli/commands/index/index-list-segments/IndexSegmentListCommand.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-list-segments/IndexSegmentListCommand.cs
@@ -30,6 +30,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "list-segments";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Arguments.Add(new IndexDirectoryArgument());
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-list-taxonomy-stats/IndexListTaxonomyStatsCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-list-taxonomy-stats/IndexListTaxonomyStatsCommand.cs
 
b/src/tools/lucene-cli/commands/index/index-list-taxonomy-stats/IndexListTaxonomyStatsCommand.cs
index ad985d8..ad4772c 100644
--- 
a/src/tools/lucene-cli/commands/index/index-list-taxonomy-stats/IndexListTaxonomyStatsCommand.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-list-taxonomy-stats/IndexListTaxonomyStatsCommand.cs
@@ -31,6 +31,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "list-taxonomy-stats";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Arguments.Add(new IndexDirectoryArgument());
                 this.ShowTreeOption = this.Option("-tree|--show-tree", 
FromResource("ShowTreeDescription"), CommandOptionType.NoValue);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-list-term-info/IndexListTermInfoCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-list-term-info/IndexListTermInfoCommand.cs
 
b/src/tools/lucene-cli/commands/index/index-list-term-info/IndexListTermInfoCommand.cs
index 780e8d1..688372a 100644
--- 
a/src/tools/lucene-cli/commands/index/index-list-term-info/IndexListTermInfoCommand.cs
+++ 
b/src/tools/lucene-cli/commands/index/index-list-term-info/IndexListTermInfoCommand.cs
@@ -29,6 +29,7 @@ namespace Lucene.Net.Cli
 
                 this.Name = "list-term-info";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Arguments.Add(new IndexDirectoryArgument(required: true) 
{ Description = FromResource("IndexDirectoryDescription") });
                 this.Argument("<FIELD>", FromResource("FieldDescription"));

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/index/index-split/IndexSplitCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/index/index-split/IndexSplitCommand.cs 
b/src/tools/lucene-cli/commands/index/index-split/IndexSplitCommand.cs
index 80bd2eb..b8cc60e 100644
--- a/src/tools/lucene-cli/commands/index/index-split/IndexSplitCommand.cs
+++ b/src/tools/lucene-cli/commands/index/index-split/IndexSplitCommand.cs
@@ -60,11 +60,17 @@ namespace Lucene.Net.Cli
 
             var input = cmd as Configuration;
 
+            args.Add("-num");
+
             if (input.NumberOfParts != null && input.NumberOfParts.HasValue())
             {
-                args.Add("-num");
                 args.Add(input.NumberOfParts.Value());
             }
+            else
+            {
+                // Default to 2 parts
+                args.Add("2");
+            }
 
             if (input.Sequential != null && input.Sequential.HasValue())
             {

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/commands/lock/lock-stress-test/LockStressTestCommand.cs
----------------------------------------------------------------------
diff --git 
a/src/tools/lucene-cli/commands/lock/lock-stress-test/LockStressTestCommand.cs 
b/src/tools/lucene-cli/commands/lock/lock-stress-test/LockStressTestCommand.cs
index 9b0f908..199ad08 100644
--- 
a/src/tools/lucene-cli/commands/lock/lock-stress-test/LockStressTestCommand.cs
+++ 
b/src/tools/lucene-cli/commands/lock/lock-stress-test/LockStressTestCommand.cs
@@ -29,16 +29,15 @@ namespace Lucene.Net.Cli
 
                 this.Name = "stress-test";
                 this.Description = FromResource("Description");
+                this.ExtendedHelpText = FromResource("ExtendedHelpText");
 
                 this.Argument("<ID>", FromResource("IDDescription"));
                 this.Argument("<VERIFIER_HOST>", 
FromResource("VerifierHostDescription"));
                 this.Argument("<VERIFIER_PORT>", 
FromResource("VerfierPortDescription"));
-                this.Argument("<LOCK_FACTORY_TYPENAME>", 
FromResource("LockFactoryTypeNameDescription"));
-                this.Argument("<LOCK_DIRECTORY_NAME>", 
FromResource("LockFactoryNameDescription"));
+                this.Argument("<LOCK_FACTORY_TYPE>", 
FromResource("LockFactoryTypeDescription"));
+                this.Argument("<LOCK_DIRECTORY>", 
FromResource("LockDirectoryDescription"));
                 this.Argument("<SLEEP_TIME_MS>", 
FromResource("SleepTimeMSDescription"));
-                this.Argument("<COUNT>", FromResource("CountDescription"));
-
-                this.ExtendedHelpText = FromResource("ExtendedHelpText");
+                this.Argument("<TRIES>", FromResource("TriesDescription"));
 
                 this.OnExecute(() => new LockStressTestCommand().Run(this));
             }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/analysis/index.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/analysis/index.md 
b/src/tools/lucene-cli/docs/analysis/index.md
new file mode 100644
index 0000000..c114294
--- /dev/null
+++ b/src/tools/lucene-cli/docs/analysis/index.md
@@ -0,0 +1,10 @@
+# analysis
+
+## Description
+
+Utilities to manage specialized analyzers.
+
+## Commands
+
+- [stempel-compile-stems](stempel-compile-stems.md)
+- [stempel-patch-stems](stempel-patch-stems.md)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/analysis/stempel-compile-stems.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/analysis/stempel-compile-stems.md 
b/src/tools/lucene-cli/docs/analysis/stempel-compile-stems.md
new file mode 100644
index 0000000..6aae62c
--- /dev/null
+++ b/src/tools/lucene-cli/docs/analysis/stempel-compile-stems.md
@@ -0,0 +1,37 @@
+# stempel-compile-stems
+
+### Name
+
+`analysis-stempel-compile-stems` - Compiles a stemmer table for the Egothor 
stemmer in the Lucene.Net.Analysis.Stempel project.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll analysis stempel-compile-stems 
<STEMMING_ALGORITHM> <STEMMER_TABLE_FILE> [-e|--encoding] [?|-h|--help]</code>
+
+### Description
+
+See the [Egothor project documentation](http://egothor.sourceforge.net/) for 
more information.
+
+### Arguments
+
+`STEMMING_ALGORITHM`
+
+The name of the desired stemming algorithm to use. Possible values are `Multi` 
(which changes the stemmer to use the  MultiTrie2 rather than a Trie class to 
store its data) or `0` which instructs the stemmer to store the original data. 
Any other supplied value will use the default algorithm. See the [Egothor 
project documentation](http://egothor.sourceforge.net/) for more information.
+
+`STEMMER_TABLE_FILE`
+
+The path to a file containing a stemmer table. Multiple values can be supplied 
separated by a space.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-e|--encoding <ENCODING>`
+
+The file encoding used by the stemmer files. If not supplied, the default 
value is `UTF-8`. Note this value can alternatively be supplied by setting the 
environment variable `egothor.stemmer.charset`.
+
+### Example
+
+<code>dotnet lucene-cli.dll analysis stempel-compile-stems test 
X:\stemmer-data\table1.txt X:\stemmer-data\table2.txt</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/analysis/stempel-patch-stems.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/analysis/stempel-patch-stems.md 
b/src/tools/lucene-cli/docs/analysis/stempel-patch-stems.md
new file mode 100644
index 0000000..9b4ce4a
--- /dev/null
+++ b/src/tools/lucene-cli/docs/analysis/stempel-patch-stems.md
@@ -0,0 +1,34 @@
+# stempel-patch-stems
+
+### Name
+
+`analysis-stempel-patch-stems` - Generates patch commands from an already 
prepared stemmer table for the Egothor stemmer in the 
Lucene.Net.Analysis.Stempel project.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll analysis stempel-patch-stems <STEMMER_TABLE_FILE> 
[-e|--encoding] [?|-h|--help]</code>
+
+### Description
+
+See the [Egothor project documentation](http://egothor.sourceforge.net/) for 
more information.
+
+### Arguments
+
+`STEMMER_TABLE_FILE`
+
+The path to a file containing a stemmer table. Multiple values can be supplied 
separated by a space.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-e|--encoding <ENCODING>`
+
+The file encoding used by the stemmer files. If not supplied, the default 
value is `UTF-8`. Note this value can alternatively be supplied by setting the 
environment variable `egothor.stemmer.charset`.
+
+### Example
+
+<code>dotnet lucene-cli.dll analysis stempel-patch-stems 
X:\stemmer-data\table1.txt X:\stemmer-data\table2.txt --encoding UTF-16</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/associations-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/associations-facets.md 
b/src/tools/lucene-cli/docs/demo/associations-facets.md
new file mode 100644
index 0000000..77b10fe
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/associations-facets.md
@@ -0,0 +1,27 @@
+# associations-facets
+
+### Name
+
+`demo-associations-facets` - Shows example usage of category associations.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo associations-facets [-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
+
+<code>dotnet lucene-cli.dll demo associations-facets</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/distance-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/distance-facets.md 
b/src/tools/lucene-cli/docs/demo/distance-facets.md
new file mode 100644
index 0000000..abfdf3a
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/distance-facets.md
@@ -0,0 +1,27 @@
+# distance-facets
+
+### Name
+
+`demo-distance-facets` - Shows simple usage of dynamic range faceting, using 
the expressions module to calculate distance.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo distance-facets [-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
+
+<code>dotnet lucene-cli.dll demo distance-facets</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/expression-aggregation-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/expression-aggregation-facets.md 
b/src/tools/lucene-cli/docs/demo/expression-aggregation-facets.md
new file mode 100644
index 0000000..8633982
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/expression-aggregation-facets.md
@@ -0,0 +1,27 @@
+# expression-aggregation-facets
+
+### Name
+
+`demo-expression-aggregation-facets` - Shows facets aggregation by an 
expression.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo expression-aggregation-facets 
[-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
+
+<code>dotnet lucene-cli.dll demo expression-aggregation-facets</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/index-files.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/index-files.md 
b/src/tools/lucene-cli/docs/demo/index-files.md
new file mode 100644
index 0000000..10d1806
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/index-files.md
@@ -0,0 +1,51 @@
+# index-files
+
+### Name
+
+`demo-index-files` - Index all files under a directory.
+
+### Synopsis
+
+```
+dotnet lucene-cli.dll demo index-files <INDEX_DIRECTORY> <SOURCE_DIRECTORY> 
[-u|--update] [?|-h|--help]
+dotnet lucene-cli.dll demo index-files [-src|--view-source-code] 
[-out|--output-source-code]
+```
+
+### Description
+
+This demo can be used to learn how to build a Lucene.Net index. After the 
index has been built, you can run the [search-files demo](search-files.md) to 
run queries against it.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index.
+
+`SOURCE_DIRECTORY`
+
+The source directory containing the files to index. This directory will be 
analyzed recursively.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-u|--update`
+
+Adds new documents to an existing index. If not supplied, any existing index 
in the `INDEX_DIRECTORY` will be overwritten.
+
+`-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
+
+Indexes the contents of `C:\Users\BGates\Documents\` and places the Lucene.Net 
index in `X:\test-index\`.
+
+<code>dotnet lucene-cli.dll demo index-files X:\test-index 
C:\Users\BGates\Documents</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/index.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/index.md 
b/src/tools/lucene-cli/docs/demo/index.md
new file mode 100644
index 0000000..27f4ec1
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/index.md
@@ -0,0 +1,17 @@
+# demo
+
+## Description
+
+Demos for various Lucene.Net functionality including C# code samples.
+
+## Commands
+
+- [associations-facets](associations-facets.md)
+- [distance-facets](distance-facets.md)
+- [expression-aggregation-facets](expression-aggregation-facets.md)
+- [index-files](index-files.md)
+- [multi-category-lists-facets](multi-category-lists-facets.md)
+- [range-facets](range-facets.md)
+- [search-files](search-files.md)
+- [simple-facets](simple-facets.md)
+- [simple-sorted-set-facets](simple-sorted-set-facets.md)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/multi-category-lists-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/multi-category-lists-facets.md 
b/src/tools/lucene-cli/docs/demo/multi-category-lists-facets.md
new file mode 100644
index 0000000..f486c2a
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/multi-category-lists-facets.md
@@ -0,0 +1,28 @@
+# multi-category-lists-facets
+
+### Name
+
+`demo-multi-category-lists-facets` - Demonstrates indexing categories into 
different indexed fields.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo multi-category-lists-facets 
[-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
+
+<code>dotnet lucene-cli.dll demo multi-category-lists-facets</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/range-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/range-facets.md 
b/src/tools/lucene-cli/docs/demo/range-facets.md
new file mode 100644
index 0000000..09e392e
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/range-facets.md
@@ -0,0 +1,27 @@
+# range-facets
+
+### Name
+
+`demo-range-facets` - Shows simple usage of dynamic range faceting.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo range-facets [-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
+
+<code>dotnet lucene-cli.dll demo range-facets</code>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/search-files.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/search-files.md 
b/src/tools/lucene-cli/docs/demo/search-files.md
new file mode 100644
index 0000000..3bbfe38
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/search-files.md
@@ -0,0 +1,72 @@
+# search-files
+
+### Name
+
+`demo-search-files` - Simple command-line based search demo.
+
+### Synopsis
+
+```
+dotnet lucene-cli.dll demo search-files <INDEX_DIRECTORY> [-f|--field] 
[-r|--repeat] [-qf|--queries-file] [-q|--query] [--raw] [-p|--page-size] 
[?|-h|--help]
+dotnet lucene-cli.dll demo search-files [-src|--view-source-code] 
[-out|--output-source-code]
+```
+
+### Description
+
+Run the [index-files demo](index-files.md) first to generate an index to 
search.
+
+> NOTE: To run queries interactively in the console, omit both the 
`--queries-file` and the `--query` arguments.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index that has previously been created using the 
[index-files demo](index-files.md).
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-f|--field <FIELD>`
+
+The index field to use in the search. If not supplied, defaults to `contents`.
+
+`-r|--repeat <NUMBER>`
+
+Repeat the search and time as a benchmark.
+
+`-qf|--queries-file <PATH>`
+
+A file containing the queries to perform.
+
+`-q|--query <QUERY>`
+
+A query to perform.
+
+`--raw`
+
+Output raw format.
+
+`-p|--page-size <NUMBER>`
+
+Hits per page to display.
+
+`-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.
+
+### Examples
+
+Search the index located in the `X:\test-index` directory interactively, 
showing 15 results per page in raw format:
+
+<code>dotnet lucene-cli.dll demo search-files X:\test-index -p 15 --raw</code>
+
+Run the query "foobar" against the "path" field in the index located in the 
`X:\test-index` directory:
+
+<code>dotnet lucene-cli.dll demo search-files X:\test-index --field path 
--query foobar</code>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/simple-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/simple-facets.md 
b/src/tools/lucene-cli/docs/demo/simple-facets.md
new file mode 100644
index 0000000..cdb8f30
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/simple-facets.md
@@ -0,0 +1,27 @@
+# simple-facets
+
+### Name
+
+`demo-simple-facets` - Shows simple usage of faceted indexing and searching.
+
+### Synopsis
+
+</code>dotnet lucene-cli.dll demo simple-facets [-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
+
+<code>dotnet lucene-cli.dll demo simple-facets</code>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/demo/simple-sorted-set-facets.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/demo/simple-sorted-set-facets.md 
b/src/tools/lucene-cli/docs/demo/simple-sorted-set-facets.md
new file mode 100644
index 0000000..09052d9
--- /dev/null
+++ b/src/tools/lucene-cli/docs/demo/simple-sorted-set-facets.md
@@ -0,0 +1,29 @@
+# simple-sorted-set-facets
+
+### Name
+
+`demo-simple-sorted-set-facets` - Shows simple usage of faceted indexing and 
search using SortedSetDocValuesFacetField and SortedSetDocValuesFacetCounts.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll demo simple-sorted-set-facets 
[-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
+
+<code>dotnet lucene-cli.dll demo simple-sorted-set-facets</code>
+
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index.md 
b/src/tools/lucene-cli/docs/index.md
new file mode 100644
index 0000000..933336f
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index.md
@@ -0,0 +1,25 @@
+# Lucene.Net command line interface (CLI) tools
+
+The Lucene.Net command line interface (CLI) is a new cross-platform toolchain 
with utilities for maintaining Lucene.Net and demos for learning basic 
Lucene.Net functionality.
+
+## Installation
+
+LUCENENET TODO
+
+## CLI Commands
+
+The following commands are installed:
+
+- [analysis](analysis/index.md)
+- [demo](demo/index.md)
+- [index](index/index.md)
+- [lock](lock/index.md)
+
+## Command structure
+
+CLI command structure consists of the driver ("dotnet lucene-cli.dll"), the 
command, and possibly command arguments and options. You see this pattern in 
most CLI operations, such as checking a Lucene.Net index for problematic 
segments and fixing (removing) them:
+
+```
+dotnet lucene-cli.dll index check C:\my-index --verbose
+dotnet lucene-cli.dll index fix C:\my-index
+```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/check.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/check.md 
b/src/tools/lucene-cli/docs/index/check.md
new file mode 100644
index 0000000..caa18b2
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/check.md
@@ -0,0 +1,55 @@
+# check
+
+### Name
+
+`index-check` - Checks an index for problematic segments.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index check [<INDEX_DIRECTORY>] [-v|--verbose] 
[-c|--cross-check-term-vectors] [-dir|--directory-type] [-s|--segment] 
[?|-h|--help]</code>
+
+### Description
+
+Basic tool to check the health of an index. 
+
+As this tool checks every byte in the index, on a large index it can take 
quite a long time to run.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The path to the directory of the index to check. If omitted, it defaults to 
the current working directory.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-v|--verbose`
+
+Enable verbose output.
+
+`-c|--cross-check-term-vectors`
+
+Cross-check term vectors.
+
+`-dir|--directory-type <DIRECTORY_TYPE>`
+
+The FSDirectory implementation to use. If ommitted, it defaults to the optimal 
FSDirectory for your OS platform.
+
+`-s|--segment <SEGMENT>`
+
+Only check the specified segment(s). This can be specified multiple times, to 
check more than one segment, eg --segment _2 --segment _a.
+
+### Examples
+
+Check the index located at `X:\lucenenet-index\` verbosely, scanning only the 
segments named `_1j_Lucene41_0` and `_2u_Lucene41_0` for problems:
+
+<code>dotnet lucene-cli.dll index check X:\lucenenet-index -v -s 
_1j_Lucene41_0 -s _2u_Lucene41_0</code>
+
+
+Check the index located at `C:\taxonomy\` using the `MMapDirectory` 
memory-mapped directory implementation:
+
+<code>dotnet lucene-cli.dll index check C:\taxonomy --directory-type 
MMapDirectory</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/copy-segments.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/copy-segments.md 
b/src/tools/lucene-cli/docs/index/copy-segments.md
new file mode 100644
index 0000000..c9868ef
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/copy-segments.md
@@ -0,0 +1,40 @@
+# copy-segments
+
+### Name
+
+`index-copy-segments` - Copies segments from one index to another index.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index copy-segments <INPUT_DIRECTORY> 
<OUTPUT_DIRECTORY> <SEGMENT>[ <SEGMENT_2>...] [?|-h|--help]</code>
+
+### Description
+
+This tool does file-level copying of segments files. This means it's unable to 
split apart a single segment into multiple segments. For example if your index 
is a single segment, this tool won't help.  Also, it does basic file-level 
copying (using simple FileStream) so it will not work with non FSDirectory 
Directory implementations.
+
+### Arguments
+
+`INPUT_DIRECTORY`
+
+The directory of the index to copy.
+
+`OUTPUT_DIRECTORY`
+
+The directory of the destination index.
+
+`SEGMENT, SEGMENT_2`
+
+The segments to copy, separated by a space.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+Copy the `_71_Lucene41_0` segment from the index located at `X:\lucene-index` 
to the index located at `X:\output`:
+
+<code>dotnet lucene-cli.dll index copy-segments X:\lucene-index X:\output 
_71_Lucene41_0</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/delete-segments.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/delete-segments.md 
b/src/tools/lucene-cli/docs/index/delete-segments.md
new file mode 100644
index 0000000..398d182
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/delete-segments.md
@@ -0,0 +1,35 @@
+# delete-segments
+
+### Name
+
+`index-delete-segments` - Deletes segments from an index.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index delete-segments <INDEX_DIRECTORY> <SEGMENT>[ 
<SEGMENT_2>...] [?|-h|--help]</code>
+
+### Description
+
+You can easily accidentally remove segments from your index, so be careful! 
Always make a backup of your index first.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index.
+
+`SEGMENT`
+
+The segments to delete, separated by a space.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+Delete the segments named `_8c` and `_83` from the index located at 
`X:\category-data\`:
+
+<code>dotnet lucene-cli.dll index delete-segments X:\category-data _8c 
_83</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/extract-cfs.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/extract-cfs.md 
b/src/tools/lucene-cli/docs/index/extract-cfs.md
new file mode 100644
index 0000000..f6fc40e
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/extract-cfs.md
@@ -0,0 +1,42 @@
+# extract-cfs
+
+### Name
+
+`index-extract-cfs` - Extracts sub-files from a `.cfs` compound file.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index extract-cfs <CFS_FILE_NAME> 
[-dir|--directory-type] [?|-h|--help]</code>
+
+### Description
+
+Extracts `.cfs` compound files (that were created using the 
`CompoundFileDirectory` from Lucene.Net.Misc) to the current working directory.
+
+In order to make the extracted version of the index work, you have to copy the 
segments file from the compound index into the directory where the extracted 
files are stored.
+
+### Arguments
+
+`CFS_FILE_NAME`
+
+The path to a `.cfs` compound file containing words to parse.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-dir|--directory-type <DIRECTORY_TYPE>`
+
+The FSDirectory implementation to use. If ommitted, it defaults to the optimal 
FSDirectory for your OS platform.
+
+### Examples
+
+Extract the files from the compound file at `X:\lucene-index\_81.cfs` to the 
current working directory:
+
+<code>dotnet lucene-cli.dll index extract-cfs X:\lucene-index\_81.cfs</code>
+
+
+Extract the files from the compound file at `X:\lucene-index\_64.cfs` to the 
current working directory using the `SimpleFSDirectory` implementation:
+
+<code>dotnet lucene-cli.dll index extract-cfs X:\lucene-index\_64.cfs 
--directory-type SimpleFSDirectory</code>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/fix.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/fix.md 
b/src/tools/lucene-cli/docs/index/fix.md
new file mode 100644
index 0000000..3158aab
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/fix.md
@@ -0,0 +1,54 @@
+# fix
+
+### Name
+
+`index-fix` - Fixes an index by removing problematic segments.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index fix [<INDEX_DIRECTORY>] [-v|--verbose] 
[-c|--cross-check-term-vectors] [-dir|--directory-type] [--dry-run] 
[?|-h|--help]</code>
+
+### Description
+
+Basic tool to write a new segments file that removes reference to problematic 
segments. As this tool checks every byte in the index, on a large index it can 
take quite a long time to run.
+
+> **WARNING:** This command should only be used on an emergency basis as it 
will cause documents (perhaps many) to be permanently removed from the index. 
Always make a backup copy of your index before running this! Do not run this 
tool on an index that is actively being written to. You have been warned!
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index. If omitted, it defaults to the current working 
directory.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-v|--verbose`
+
+Enables verbose output.
+
+`-c|--cross-check-term-vectors`
+
+Cross check term vectors.
+
+`-dir|--directory-type <DIRECTORY_TYPE>`
+
+The `FSDirectory` implementation to use. If omitted, it defaults to the 
optimal `FSDirectory` for your OS platform.
+
+`--dry-run`
+
+Doesn't change the index, but reports any actions that would be taken if this 
option were not supplied.
+
+### Examples
+
+Check what a fix operation would do if run on the index located at 
`X:\product-index\`, using verbose output:
+
+<code>dotnet lucene-cli.dll index fix X:\product-index --verbose 
--dry-run</code>
+
+
+Fix the index located at `X:\product-index` and cross check term vectors:
+
+<code>dotnet lucene-cli.dll index fix X:\product-index -c</code>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/index.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/index.md 
b/src/tools/lucene-cli/docs/index/index.md
new file mode 100644
index 0000000..43f323e
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/index.md
@@ -0,0 +1,23 @@
+# index
+
+## Description
+
+Utilities to manage specialized analyzers.
+
+> **WARNING:** Many of these operations change an index in ways that cannot be 
reversed. Always make a backup of your index before running these commands. 
+
+## Commands
+
+- [check](check.md)
+- [copy-segments](copy-segments.md)
+- [delete-segments](delete-segments.md)
+- [extract-cfs](extract-cfs.md)
+- [fix](fix.md)
+- [list-cfs](list-cfs.md)
+- [list-high-freq-terms](list-high-freq-terms.md)
+- [list-segments](list-segments.md)
+- [list-taxonomy-stats](list-taxonomy-stats.md)
+- [list-term-info](list-term-info.md)
+- [merge](merge.md)
+- [split](split.md)
+- [upgrade](upgrade.md)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/list-cfs.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/list-cfs.md 
b/src/tools/lucene-cli/docs/index/list-cfs.md
new file mode 100644
index 0000000..6629dfa
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/list-cfs.md
@@ -0,0 +1,36 @@
+# list-cfs
+
+### Name
+
+`index-list-cfs` - Lists sub-files from a `.cfs` compound file.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index list-cfs <CFS_FILE_NAME> 
[-dir|--directory-type] [?|-h|--help]</code>
+
+### Description
+
+Prints the filename and size of each file within a given `.cfs` compound file. 
The .cfs compound file format is created using the CompoundFileDirectory from 
Lucene.Net.Misc.
+
+### Arguments
+
+`CFS_FILE_NAME`
+
+The `.cfs` compound file containing words to parse.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-dir|--directory-type <DIRECTORY_TYPE>`
+
+The `FSDirectory` implementation to use. If omitted, defaults to the optimal 
`FSDirectory` for your OS platform.
+
+### Example
+
+Lists the files within the `X:\categories\_53.cfs` compound file using the 
`NIOFSDirectory` directory implementation:
+
+<code>dotnet lucene-cli.dll index list-cfs X:\categories\_53.cfs -dir 
NIOFSDirectory</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/list-high-freq-terms.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/list-high-freq-terms.md 
b/src/tools/lucene-cli/docs/index/list-high-freq-terms.md
new file mode 100644
index 0000000..bbeb364
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/list-high-freq-terms.md
@@ -0,0 +1,49 @@
+# list-high-freq-terms
+
+### Name
+
+`index-list-high-freq-terms` - Lists the top *N* most frequent terms by 
document frequency.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index list-high-freq-terms [<INDEX_DIRECTORY>] 
[-t|--total-term-frequency] [-n|--number-of-terms] [-f|--field] 
[?|-h|--help]</code>
+
+### Description
+
+Extracts the top *N* most frequent terms (by document frequency) from an 
existing Lucene index and reports their
+document frequency.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index. If omitted, it defaults to the current working 
directory.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-t|--total-term-frequency`
+
+Specifies that both the document frequency and term frequency are reported, 
ordered by descending total term frequency.
+
+`-n|--number-of-terms <NUMBER>`
+
+The number of terms to consider. If omitted, defaults to 100.
+
+`-f|--field <FIELD>`
+
+The field to consider. If omitted, considers all fields.
+
+### Examples
+
+List the high frequency terms in the index located at `F:\product-index\` on 
the `description` field, reporting both document frequency and term frequency:
+
+<code>dotnet lucene-cli.dll index list-high-freq-terms F:\product-index 
--total-term-frequency --field description</code>
+
+
+List the high frequency terms in the index located at `C:\lucene-index\` on 
the `name` field, tracking 30 terms:
+
+<code>dotnet lucene-cli.dll index list-high-freq-terms C:\lucene-index --f 
name -n 30</code>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/list-segments.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/list-segments.md 
b/src/tools/lucene-cli/docs/index/list-segments.md
new file mode 100644
index 0000000..25f07b9
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/list-segments.md
@@ -0,0 +1,32 @@
+# list-segments
+
+### Name
+
+`index-list-segments` - Lists segments in an index.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index list-segments [<INDEX_DIRECTORY>] 
[?|-h|--help]</code>
+
+### Description
+
+After running this command to view segments, use 
[copy-segments](copy-segments.md) to copy segments from one index directory to 
another or [delete-segments](delete-segments.md) to remove segments from an 
index.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index. If omitted, it defaults to the current working 
directory.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+### Example
+
+List the segments in the index located at `X:\lucene-index\`:
+
+<code>dotnet lucene-cli.dll index list-segments X:\lucene-index</code>
+

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/70f15595/src/tools/lucene-cli/docs/index/list-taxonomy-stats.md
----------------------------------------------------------------------
diff --git a/src/tools/lucene-cli/docs/index/list-taxonomy-stats.md 
b/src/tools/lucene-cli/docs/index/list-taxonomy-stats.md
new file mode 100644
index 0000000..7c43343
--- /dev/null
+++ b/src/tools/lucene-cli/docs/index/list-taxonomy-stats.md
@@ -0,0 +1,38 @@
+# list-taxonomy-stats
+
+### Name
+
+`index-list-taxonomy-stats` - Displays the taxonomy statistical information 
for a taxonomy index.
+
+### Synopsis
+
+<code>dotnet lucene-cli.dll index list-taxonomy-stats [<INDEX_DIRECTORY>] 
[-tree|--show-tree] [?|-h|--help]</code>
+
+### Description
+
+Prints how many ords are under each dimension.
+
+### Arguments
+
+`INDEX_DIRECTORY`
+
+The directory of the index. If omitted, it defaults to the current working 
directory.
+
+> **NOTE:** This directory must be a facet taxonomy directory for the command 
to succeed.
+
+### Options
+
+`?|-h|--help`
+
+Prints out a short help for the command.
+
+`-tree|--show-tree`
+
+Recursively lists all descendant nodes.
+
+### Example
+
+List the taxonomy statistics from the index located at 
`X:\category-taxonomy-index\`, viewing all descendant nodes:
+
+<code>dotnet lucene-cli.dll index list-taxonomy-stats 
X:\category-taxonomy-index -tree</code>
+

Reply via email to