This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git


The following commit(s) were added to refs/heads/master by this push:
     new f44e3b9  docs: Lucene.Net.QueryParser + Lucene.Net.Replicator: Fixed 
formatting and code snippets so they are readable, fixed many broken links (see 
#284, #300)
f44e3b9 is described below

commit f44e3b94893ce86cc458dc2dc2116b08bc75eca4
Author: Shad Storhaug <[email protected]>
AuthorDate: Fri Apr 16 22:19:57 2021 +0700

    docs: Lucene.Net.QueryParser + Lucene.Net.Replicator: Fixed formatting and 
code snippets so they are readable, fixed many broken links (see #284, #300)
---
 src/Lucene.Net.QueryParser/Classic/package.md      |  77 ++++++--
 .../Flexible/Core/Builders/package.md              |   4 +-
 .../Flexible/Core/Config/package.md                |   8 +-
 .../Flexible/Core/Messages/package.md              |   4 +-
 .../Flexible/Core/Nodes/package.md                 |  45 ++++-
 .../Flexible/Core/Parser/package.md                |   7 +-
 .../Flexible/Core/Processors/package.md            |  14 +-
 .../Flexible/Core/Util/package.md                  |   4 +-
 .../Flexible/Core/package.md                       |  12 +-
 .../Flexible/Messages/package.md                   |  61 +++++-
 .../Flexible/Standard/Builders/package.md          |   6 +-
 .../Flexible/Standard/Config/package.md            |   6 +-
 .../Flexible/Standard/Nodes/package.md             |   4 +-
 .../Flexible/Standard/Parser/package.md            |   6 +-
 .../Flexible/Standard/Processors/package.md        |   6 +-
 .../Flexible/Standard/package.md                   |  10 +-
 src/Lucene.Net.QueryParser/Simple/package.md       |   4 +-
 src/Lucene.Net.QueryParser/Xml/package.md          |   4 +-
 src/Lucene.Net.QueryParser/overview.md             |  82 ++++----
 src/Lucene.Net.Replicator/Http/package.md          |   4 +-
 src/Lucene.Net.Replicator/Http/replicator.md       | 162 ----------------
 src/Lucene.Net.Replicator/package.md               | 210 ++++++++++++++++++---
 websites/apidocs/index.md                          |   2 +-
 23 files changed, 436 insertions(+), 306 deletions(-)

diff --git a/src/Lucene.Net.QueryParser/Classic/package.md 
b/src/Lucene.Net.QueryParser/Classic/package.md
index 7f2c35f..07217a2 100644
--- a/src/Lucene.Net.QueryParser/Classic/package.md
+++ b/src/Lucene.Net.QueryParser/Classic/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Classic
 summary: *content
 ---
@@ -27,9 +27,6 @@ Note that JavaCC defines lots of public classes, methods and 
fields
 that do not need to be public.  These clutter the documentation. 
 Sorry.
 
-Note that because JavaCC defines a class named <tt>Token</tt>, 
<tt>org.apache.lucene.analysis.Token</tt>
-must always be fully qualified in source code in this package.
-
 __NOTE__: <xref:Lucene.Net.QueryParsers.Flexible.Standard> has an alternative 
queryparser that matches the syntax of this one, but is more modular,
 enabling substantial customization to how a query is created.
 
@@ -45,7 +42,7 @@ enabling substantial customization to how a query is created.
 
     *   [Wildcard Searches](#wildcard-searches)
 
-    *   [Regular expression Searches](#regexp-searches)
+    *   [Regular expression Searches](#regular-expression-searches)
 
     *   [Fuzzy Searches](#fuzzy-searches)
 
@@ -61,7 +58,7 @@ enabling substantial customization to how a query is created.
 
     *   [AND](#and)
 
-    *   [+](#+)
+    *   [+](#nbsp)
 
     *   [NOT](#not)
 
@@ -75,11 +72,15 @@ enabling substantial customization to how a query is 
created.
 
 ## Overview
 
-Although Lucene provides the ability to create your own queries through its 
API, it also provides a rich query language through the Query Parser, a lexer 
which interprets a string into a Lucene Query using JavaCC. 
+Although Lucene.NET provides the ability to create your own queries through 
its API, it also provides a rich query language through the Query Parser, a 
lexer which interprets a string into a Lucene.NET Query using JavaCC. 
 
-Generally, the query parser syntax may change from release to release. This 
page describes the syntax as of the current release. If you are using a 
different version of Lucene, please consult the copy of <span 
class="codefrag">docs/queryparsersyntax.html</span> that was distributed with 
the version you are using. 
+Generally, the query parser syntax may change from release to release. This 
page describes the syntax as of the current release. If you are using a 
different version of Lucene.NET, please consult the copy of this document that 
was distributed with the version you are using. 
 
- Before choosing to use the provided Query Parser, please consider the 
following: 1. If you are programmatically generating a query string and then 
parsing it with the query parser then you should seriously consider building 
your queries directly with the query API. In other words, the query parser is 
designed for human-entered text, not for program-generated text. 2. Untokenized 
fields are best added directly to queries, and not through the query parser. If 
a field's values are generate [...]
+Before choosing to use the provided Query Parser, please consider the 
following:
+
+1. If you are programmatically generating a query string and then parsing it 
with the query parser then you should seriously consider building your queries 
directly with the query API. In other words, the query parser is designed for 
human-entered text, not for program-generated text.
+2. Untokenized fields are best added directly to queries, and not through the 
query parser. If a field's values are generated programmatically by the 
application, then so should query clauses for this field. An analyzer, which 
the query parser uses, is designed to convert human-entered text to terms. 
Program-generated values, like dates, keywords, etc., should be consistently 
program-generated.
+3. In a query form, fields which are general text should use the query parser. 
All others, such as date ranges, keywords, etc. are better added directly 
through the query API. A field with a limit set of values, that can be 
specified with a pull-down menu should not be added to a query string which is 
subsequently parsed, but rather added as a TermQuery clause. 
 
 ## Terms
 
@@ -101,17 +102,23 @@ You can search any field by typing the field name 
followed by a colon ":" and th
 
 As an example, let's assume a Lucene index contains two fields, title and text 
and text is the default field. If you want to find the document entitled "The 
Right Way" which contains the text "don't go this way", you can enter: 
 
+```console
 title:"The Right Way" AND text:go
+```
 
 or
 
+```console
 title:"The Right Way" AND go
+```
 
 Since text is the default field, the field indicator is not required.
 
 Note: The field is only valid for the term that it directly precedes, so the 
query
 
+```console
 title:The Right Way
+```
 
 Will only find "The" in the title field. It will find "Right" and "Way" in the 
default field (in this case the text field). 
 
@@ -129,15 +136,21 @@ To perform a multiple character wildcard search use the 
"*" symbol.
 
 The single character wildcard search looks for terms that match that with the 
single character replaced. For example, to search for "text" or "test" you can 
use the search:
 
+```console
 te?t
+```
 
 Multiple character wildcard searches looks for 0 or more characters. For 
example, to search for test, tests or tester, you can use the search: 
 
+```console
 test*
+```
 
 You can also use the wildcard searches in the middle of a term.
 
+```console
 te*t
+```
 
 Note: You cannot use a * or ? symbol as the first character of a search.
 
@@ -145,19 +158,25 @@ Note: You cannot use a * or ? symbol as the first 
character of a search.
 
 Lucene supports regular expression searches matching a pattern between forward 
slashes "/". The syntax may change across releases, but the current supported 
syntax is documented in the [RegExp](xref:Lucene.Net.Util.Automaton.RegExp) 
class. For example to find documents containing "moat" or "boat": 
 
+```console
 /[mb]oat/
+```
 
 ### Fuzzy Searches
 
 Lucene supports fuzzy searches based on Damerau-Levenshtein Distance. To do a 
fuzzy search use the tilde, "~", symbol at the end of a Single word Term. For 
example to search for a term similar in spelling to "roam" use the fuzzy 
search: 
 
+```console
 roam~
+```
 
 This search will find terms like foam and roams.
 
 An additional (optional) parameter can specify the maximum number of edits 
allowed. The value is between 0 and 2, For example:
 
+```console
 roam~1
+```
 
 The default that is used if the parameter is not given is 2 edit distances.
 
@@ -167,17 +186,23 @@ Previously, a floating point value was allowed here. This 
syntax is considered d
 
 Lucene supports finding words are a within a specific distance away. To do a 
proximity search use the tilde, "~", symbol at the end of a Phrase. For example 
to search for a "apache" and "jakarta" within 10 words of each other in a 
document use the search: 
 
+```console
 "jakarta apache"~10
+```
 
 ### Range Searches
 
 Range Queries allow one to match documents whose field(s) values are between 
the lower and upper bound specified by the Range Query. Range Queries can be 
inclusive or exclusive of the upper and lower bounds. Sorting is done 
lexicographically.
 
+```console
 mod_date:[20020101 TO 20030101]
+```
 
 This will find documents whose mod_date fields have values between 20020101 
and 20030101, inclusive. Note that Range Queries are not reserved for date 
fields. You could also use range queries with non-date fields:
 
+```console
 title:{Aida TO Carmen}
+```
 
 This will find all documents whose titles are between Aida and Carmen, but not 
including Aida and Carmen.
 
@@ -189,15 +214,21 @@ Lucene provides the relevance level of matching documents 
based on the terms fou
 
 Boosting allows you to control the relevance of a document by boosting its 
term. For example, if you are searching for
 
+```console
 jakarta apache
+```
 
 and you want the term "jakarta" to be more relevant boost it using the ^ 
symbol along with the boost factor next to the term. You would type:
 
+```console
 jakarta^4 apache
+```
 
 This will make documents with the term jakarta appear more relevant. You can 
also boost Phrase Terms as in the example: 
 
+```console
 "jakarta apache"^4 "Apache Lucene"
+```
 
 By default, the boost factor is 1. Although the boost factor must be positive, 
it can be less than 1 (e.g. 0.2)
 
@@ -211,11 +242,15 @@ The OR operator is the default conjunction operator. This 
means that if there is
 
 To search for documents that contain either "jakarta apache" or just "jakarta" 
use the query:
 
+```console
 "jakarta apache" jakarta
+```
 
 or
 
+```console
 "jakarta apache" OR jakarta
+```
 
 ### AND
 
@@ -223,15 +258,19 @@ The AND operator matches documents where both terms exist 
anywhere in the text o
 
 To search for documents that contain "jakarta apache" and "Apache Lucene" use 
the query: 
 
+```console
 "jakarta apache" AND "Apache Lucene"
+```
 
-### +
+### +&nbsp;
 
 The "+" or required operator requires that the term after the "+" symbol exist 
somewhere in a the field of a single document.
 
 To search for documents that must contain "jakarta" and may contain "lucene" 
use the query:
 
+```console
 +jakarta lucene
+```
 
 ### NOT
 
@@ -239,19 +278,25 @@ The NOT operator excludes documents that contain the term 
after NOT. This is equ
 
 To search for documents that contain "jakarta apache" but not "Apache Lucene" 
use the query: 
 
+```console
 "jakarta apache" NOT "Apache Lucene"
+```
 
 Note: The NOT operator cannot be used with just one term. For example, the 
following search will return no results:
 
+```console
 NOT "jakarta apache"
+```
 
 ### -
 
 The "-" or prohibit operator excludes documents that contain the term after 
the "-" symbol.
 
-To search for documents that contain "jakarta apache" but not "Apache Lucene" 
use the query: 
+To search for documents that contain "jakarta apache" but not "Apache Lucene" 
use the query:
 
+```console
 "jakarta apache" -"Apache Lucene"
+```
 
 ## Grouping
 
@@ -259,7 +304,9 @@ Lucene supports using parentheses to group clauses to form 
sub queries. This can
 
 To search for either "jakarta" or "apache" and "website" use the query:
 
+```console
 (jakarta OR apache) AND website
+```
 
 This eliminates any confusion and makes sure you that website must exist and 
either term jakarta or apache may exist.
 
@@ -269,14 +316,20 @@ Lucene supports using parentheses to group multiple 
clauses to a single field.
 
 To search for a title that contains both the word "return" and the phrase 
"pink panther" use the query:
 
+```console
 title:(+return +"pink panther")
+```
 
 ## Escaping Special Characters
 
 Lucene supports escaping special characters that are part of the query syntax. 
The current list special characters are
 
+```console
 + - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
+```
 
 To escape these character use the \ before the character. For example to 
search for (1+1):2 use the query:
 
-\(1\+1\)\:2
\ No newline at end of file
+```console
+\(1\+1\)\:2
+```
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Builders/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Builders/package.md
index c294e9e..0608b9e 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Builders/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Builders/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Builders
 summary: *content
 ---
@@ -25,4 +25,4 @@ Necessary classes to implement query builders.
 
 ## Query Parser Builders
 
- The package <tt>org.apache.lucene.queryParser.builders</tt> contains the 
interface that builders must implement, it also contain a utility 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Builders.QueryTreeBuilder>, which 
walks the tree and call the Builder for each node in the tree. Builder normally 
convert QueryNode Object into a Lucene Query Object, and normally it's a 
one-to-one mapping class. But other builders implementations can by written to 
convert QueryNode objects to other non luc [...]
\ No newline at end of file
+The namespace <tt>Lucene.Net.QueryParsers.Core.Builders</tt> contains the 
interface that builders must implement, it also contain a utility 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Builders.QueryTreeBuilder>, which 
walks the tree and call the Builder for each node in the tree. Builder normally 
convert QueryNode Object into a Lucene Query Object, and normally it's a 
one-to-one mapping class. But other builders implementations can by written to 
convert QueryNode objects to other non-Luc [...]
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Config/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Config/package.md
index d0179d8..861a939 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Config/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Config/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Config
 summary: *content
 ---
@@ -25,8 +25,8 @@ Base classes used to configure the query processing.
 
 ## Query Configuration Interfaces
 
- The package <tt>org.apache.lucene.queryparser.flexible.config</tt> contains 
query configuration handler abstract class that all config handlers should 
extend. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Core.Config</tt> contains 
query configuration handler abstract class that all config handlers should 
extend. 
 
- See 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Config.StandardQueryConfigHandler>
 for a reference implementation. 
+See 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Config.StandardQueryConfigHandler>
 for a reference implementation. 
 
- The <xref:Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler> 
and <xref:Lucene.Net.QueryParsers.Flexible.Core.Config.FieldConfig> are used in 
the processors to access config information in a flexible and independent way. 
See 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Processors.TermRangeQueryNodeProcessor>
 for a reference implementation. 
+The <xref:Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler> and 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Config.FieldConfig> are used in the 
processors to access config information in a flexible and independent way. See 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Processors.TermRangeQueryNodeProcessor>
 for a reference implementation. 
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Messages/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/package.md
index 8f87a15..8f315a0 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Messages/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Messages
 summary: *content
 ---
@@ -26,4 +26,4 @@ Messages usually used by query parser implementations.
 ## Query Parser Messages
 
 
-Messages for the Flexible Query Parser, they use 
<tt>org.apache.lucene.messages.NLS</tt> API.
\ No newline at end of file
+Messages for the Flexible Query Parser use 
[Lucene.Net.QueryParsers.Flexible.Messages.NLS](xref:Lucene.Net.QueryParsers.Flexible.Messages.NLS)
 API.
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/package.md
index 0ee330f..7c7a6e1 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Nodes
 summary: *content
 ---
@@ -25,18 +25,45 @@ Query nodes commonly used by query parser implementations.
 
 ## Query Nodes
 
- The package <tt>org.apache.lucene.queryParser.nodes</tt> contains all the 
basic query nodes. The interface that represents a query node is 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode>. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Core.Nodes</tt> contains 
all the basic query nodes. The interface that represents a query node is 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode>. 
+
+<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode>s are used by the 
text parser to create a syntax tree. These nodes are designed to be used by UI 
or other text parsers. The default Lucene text parser is 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser>, 
it implements Lucene's standard syntax. 
+
+<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> interface should 
be implemented by all query nodes, the class 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> and is extended 
by all current query node implementations. 
+
+A query node tree can be printed to the a stream, and it generates a pseudo 
XML representation with all the nodes. 
 
- <xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode>s are used by the 
text parser to create a syntax tree. These nodes are designed to be used by UI 
or other text parsers. The default Lucene text parser is 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser>, 
it implements Lucene's standard syntax. 
+A query node tree can also generate a query string that can be parsed back by 
the original text parser, at this point only the standard lucene syntax is 
supported. 
 
- <xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> interface should 
be implemented by all query nodes, the class 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNodeImpl> implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> and is extended by 
all current query node implementations. 
+Grouping nodes:
 
- A query node tree can be printed to the a stream, and it generates a pseudo 
XML representation with all the nodes. 
+* AndQueryNode - used for AND operator
+* AnyQueryNode - used for ANY operator
+* OrQueryNode - used for OR operator
+* BooleanQueryNode - used when no operator is specified
+* ModifierQueryNode - used for modifier operator
+* GroupQueryNode - used for parenthesis
+* BoostQueryNode - used for boost operator
+* SlopQueryNode - phrase slop
+* FuzzyQueryNode - fuzzy node
+* TermRangeQueryNode - used for parametric field:`[low_value TO high_value]`
+* ProximityQueryNode - used for proximity search
+* NumericRangeQueryNode - used for numeric range search
+* TokenizedPhraseQueryNode - used by tokenizers/lemmatizers/analyzers for 
phrases/autophrases 
 
- A query node tree can also generate a query string that can be parsed back by 
the original text parser, at this point only the standard lucene syntax is 
supported. 
+ Leaf Nodes:
 
- Grouping nodes: * AndQueryNode - used for AND operator * AnyQueryNode - used 
for ANY operator * OrQueryNode - used for OR operator * BooleanQueryNode - used 
when no operator is specified * ModifierQueryNode - used for modifier operator 
* GroupQueryNode - used for parenthesis * BoostQueryNode - used for boost 
operator * SlopQueryNode - phrase slop * FuzzyQueryNode - fuzzy node * 
TermRangeQueryNode - used for parametric field:[low_value TO high_value] * 
ProximityQueryNode - used for proxi [...]
+* FieldQueryNode - field/value node
+* NumericQueryNode - used for numeric search
+* PathQueryNode - 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> object used with 
path-like queries
+* OpaqueQueryNode - Used as for part of the query that can be parsed by other 
parsers. schema/value
+* PrefixWildcardQueryNode - non-phrase wildcard query
+* QuotedFieldQUeryNode - regular phrase node
+* WildcardQueryNode - non-phrase wildcard query 
 
- Leaf Nodes: * FieldQueryNode - field/value node * NumericQueryNode - used for 
numeric search * PathQueryNode - 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> object used with 
path-like queries * OpaqueQueryNode - Used as for part of the query that can be 
parsed by other parsers. schema/value * PrefixWildcardQueryNode - non-phrase 
wildcard query * QuotedFieldQUeryNode - regular phrase node * WildcardQueryNode 
- non-phrase wildcard query 
+ Utility Nodes:
 
- Utility Nodes: * DeletedQueryNode - used by processors on optimizations * 
MatchAllDocsQueryNode - used by processors on optimizations * 
MatchNoDocsQueryNode - used by processors on optimizations * 
NoTokenFoundQueryNode - used by tokenizers/lemmatizers/analyzers 
\ No newline at end of file
+* DeletedQueryNode - used by processors on optimizations
+* MatchAllDocsQueryNode - used by processors on optimizations
+* MatchNoDocsQueryNode - used by processors on optimizations
+* NoTokenFoundQueryNode - used by tokenizers/lemmatizers/analyzers 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Parser/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Parser/package.md
index 92b55d0..3717d12 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Parser/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Parser/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Parser
 summary: *content
 ---
@@ -25,4 +25,7 @@ Necessary interfaces to implement text parsers.
 
 ## Parser
 
- The package <tt>org.apache.lucene.queryparser.flexible.parser</tt> contains 
interfaces that should be implemented by the parsers. Parsers produce QueryNode 
Trees from a string object. These package still needs some work to add support 
to for multiple parsers. Features that should be supported for the future, 
related with the parser: - QueryNode tree should be able convertible to any 
parser syntax. - The query syntax should support calling other parsers. - 
QueryNode tree created by multi [...]
\ No newline at end of file
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Core.Parser</tt> contains 
interfaces that should be implemented by the parsers. Parsers produce 
IQueryNode Trees from a string object. This package still needs some work to 
add support to for multiple parsers. Features that should be supported for the 
future, related with the parser:
+
+- QueryNode tree should be able convertible to any parser syntax.
+- The query syntax should support calling other parsers. - QueryNode tree 
created by multiple parsers. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Processors/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Processors/package.md
index 1d45eff..c7429f7 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Processors/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Processors/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Processors
 summary: *content
 ---
@@ -25,14 +25,14 @@ Interfaces and implementations used by query node processors
 
 ## Query Node Processors
 
- The package <tt>org.apache.lucene.queryParser.processors</tt> contains 
interfaces that should be implemented by every query node processor. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Core.Processors</tt> 
contains interfaces that should be implemented by every query node processor. 
 
- The interface that every query node processor should implement is 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor>. 
+The interface that every query node processor should implement is 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor>. 
 
- A query node processor should be used to process a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree. 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> trees can be 
programmatically created or generated by a text parser. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser> for more details about text 
parsers. 
+A query node processor should be used to process a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree. 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> trees can be 
programmatically created or generated by a text parser. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser> for more details about text 
parsers. 
 
- A query node processor should be used to process a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree. 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> trees can be 
programmatically created or generated by a text parser. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser> for more details about text 
parsers. 
+A query node processor should be used to process a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree. 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> trees can be 
programmatically created or generated by a text parser. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser> for more details about text 
parsers. 
 
- A pipeline of processors can be assembled using 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline>.
 
+A pipeline of processors can be assembled using 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline>.
 
 
- Implementors may want to extend 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorImpl>, 
which simplifies the implementation, because it walks automatically the 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode>. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorImpl> 
for more details. 
\ No newline at end of file
+Implementors may want to extend 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor>, 
which simplifies the implementation, because it walks automatically the 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode>. See 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor> for 
more details. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Util/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/Util/package.md
index b6464d7..877cac4 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Util/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Util/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core.Util
 summary: *content
 ---
@@ -24,4 +24,4 @@ Utility classes to used with the Query Parser.
 
 ## Utility classes to used with the Query Parser
 
- This package contains utility classes used with the query parsers. 
\ No newline at end of file
+This namespace contains utility classes used with the query parsers. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Core/package.md
index 95f2b40..3672604 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Core
 summary: *content
 ---
@@ -25,18 +25,18 @@ Core classes of the flexible query parser framework.
 
 ## Flexible Query Parser
 
- This package contains the necessary classes to implement a query parser. 
+This namespace contains the necessary classes to implement a query parser. 
 
- A query parser is divided in at least 2 phases, text parsing and query 
building, and one optional phase called query processing. 
+A query parser is divided in at least 2 phases, text parsing and query 
building, and one optional phase called query processing. 
 
 ### First Phase: Text Parsing
 
- The text parsing phase is performed by a text parser, which implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser.SyntaxParser> interface. A 
text parser is responsible to get a query string and convert it to a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree, which is an 
object structure that represents the elements defined in the query string. 
+The text parsing phase is performed by a text parser, which implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser.ISyntaxParser> interface. A 
text parser is responsible to get a query string and convert it to a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree, which is an 
object structure that represents the elements defined in the query string. 
 
 ### Second (optional) Phase: Query Processing
 
- The query processing phase is performed by a query processor, which 
implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor>. A 
query processor is responsible to perform any processing on a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree. This phase 
is optional and is used only if an extra processing, validation, query 
expansion, etc needs to be performed in a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree. The 
<xref:Luce [...]
+The query processing phase is performed by a query processor, which implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor>. A 
query processor is responsible to perform any processing on a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree. This phase 
is optional and is used only if an extra processing, validation, query 
expansion, etc needs to be performed in a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree. The 
<xref:Luc [...]
 
 ### Third Phase: Query Building
 
- The query building phase is performed by a query builder, which implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Builders.QueryBuilder>. A query 
builder is responsible to convert a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree into an 
arbitrary object, which is usually used to be executed against a search index. 
\ No newline at end of file
+The query building phase is performed by a query builder, which implements 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Builders.IQueryBuilder{Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode}>.
 A query builder is responsible to convert a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree into an 
arbitrary object, which is usually used to be executed against a search index. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Messages/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Messages/package.md
index 60a1fe4..876bbda 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Messages/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Messages/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Messages
 summary: *content
 ---
@@ -25,12 +25,61 @@ For Native Language Support (NLS), system of software 
internationalization.
 
 ## NLS message API
 
- This utility API, adds support for NLS messages in the apache code. It is 
currently used by the lucene "New Flexible Query PArser". 
+This utility API, adds support for NLS messages in the apache code. It is 
currently used by the lucene "New Flexible Query PArser". 
+
+Features:
+
+1. Message reference in the code, using static Strings
+2. Message resource validation at class load time, for easier debugging
+3. Allows for message IDs to be re-factored using code re-factor tools
+4. Allows for reference count on messages, just like code
+5. Lazy loading of Message Strings
+6. Normal loading Message Strings 
+
+
+Prerequisite for these examples: Add a resource file named 
`MessagesTestBundle.resx` and add messages for each of the public static string 
fields except for `Q0005E_Message_Not_In_Bundle`.
+
+Lazy loading of Message Strings
+
+```cs
+public class MessagesTest : NLS
+{
+    private static readonly string BundleName = typeof(MessagesTest).FullName;
+
+    private MessagesTest()
+    {
+        // should never be instantiated
+    }
+
+    static MessagesTest()
+    {
+        InitializeMessages(BundleName, typeof(MessagesTest));
+    }
+
+    // static string must match the strings in the property files.
+    public static string Q0001E_Invalid_Syntax;
+    public static string Q0004E_Invalid_Syntax_Escape_Unicode_Truncation;
+
+    // this message is missing from the properties file
+    public static string Q0005E_Message_Not_In_Bundle;
+}
+
+// Create a message reference
+IMessage invalidSyntax = new Message(MessagesTest.Q0001E_Invalid_Syntax, 
"XXX");
+
+// Do other stuff in the code...
+// when is time to display the message to the user or log the message on a file
+// the message is loaded from the correct bundle
 
- Features: 1. Message reference in the code, using static Strings 2. Message 
resource validation at class load time, for easier debugging 3. Allows for 
message IDs to be re-factored using eclipse or other code re-factor tools 4. 
Allows for reference count on messages, just like code 5. Lazy loading of 
Message Strings 6. Normal loading Message Strings 
+string message1 = invalidSyntax.GetLocalizedMessage();
+string message2 = invalidSyntax.GetLocalizedMessage(new CultureInfo("ja"));
+```
 
- Lazy loading of Message Strings public class MessagesTestBundle extends NLS { 
private static final String BUNDLE_NAME = MessagesTestBundle.class.getName(); 
private MessagesTestBundle() { // should never be instantiated } static { // 
register all string ids with NLS class and initialize static string // values 
NLS.initializeMessages(BUNDLE_NAME, MessagesTestBundle.class); } // static 
string must match the strings in the property files. public static String 
Q0001E_INVALID_SYNTAX; public s [...]
+Normal loading of Message Strings
 
- Normal loading of Message Strings String message1 = 
NLS.getLocalizedMessage(MessagesTestBundle.Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION);
 String message2 = 
NLS.getLocalizedMessage(MessagesTestBundle.Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION,
 Locale.JAPANESE); 
+```cs
+string message1 = 
NLS.GetLocalizedMessage(MessagesTest.Q0004E_Invalid_Syntax_Escape_Unicode_Truncation);
+string message2 = 
NLS.GetLocalizedMessage(MessagesTest.Q0004E_Invalid_Syntax_Escape_Unicode_Truncation,
 new CultureInfo("ja"));
+```
 
- The org.apache.lucene.messages.TestNLS junit contains several other examples. 
The TestNLS java code is available from the Apache Lucene code repository. 
\ No newline at end of file
+The `Lucene.Net.QueryParsers.Flexible.Messages.TestNLS` NUnit test contains 
several other examples. The TestNLS C# code is available from the Apache 
Lucene.NET code repository. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/Builders/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/Builders/package.md
index 108d1d6..2042af5 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/Builders/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/Builders/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard.Builders
 summary: *content
 ---
@@ -25,6 +25,6 @@ Standard Lucene Query Node Builders.
 
 ## Standard Lucene Query Node Builders
 
- The package org.apache.lucene.queryparser.flexible.standard.builders contains 
all the builders needed to build a Lucene Query object from a query node tree. 
These builders expect the query node tree was already processed by the 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Processors.StandardQueryNodeProcessorPipeline>.
 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Standard.Builders</tt> 
contains all the builders needed to build a Lucene Query object from a query 
node tree. These builders expect the query node tree was already processed by 
the 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Processors.StandardQueryNodeProcessorPipeline>.
 
 
- 
<xref:Lucene.Net.QueryParsers.Flexible.Standard.Builders.StandardQueryTreeBuilder>
 is a builder that already contains a defined map that maps each QueryNode 
object with its respective builder. 
\ No newline at end of file
+<xref:Lucene.Net.QueryParsers.Flexible.Standard.Builders.StandardQueryTreeBuilder>
 is a builder that already contains a defined map that maps each QueryNode 
object with its respective builder. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/Config/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/Config/package.md
index af925d2..bd8b463 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/Config/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/Config/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard.Config
 summary: *content
 ---
@@ -25,6 +25,6 @@ Standard Lucene Query Configuration.
 
 ## Standard Lucene Query Configuration
 
- The package org.apache.lucene.queryparser.flexible.standard.config contains 
the Lucene query configuration handler (StandardQueryConfigHandler). This 
configuration handler reproduces almost everything that could be set on the old 
query parser. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Standard.Config</tt> 
contains the Lucene query configuration handler (StandardQueryConfigHandler). 
This configuration handler reproduces almost everything that could be set on 
the old query parser. 
 
- StandardQueryConfigHandler is the class that should be used to configure the 
StandardQueryNodeProcessorPipeline. 
\ No newline at end of file
+StandardQueryConfigHandler is the class that should be used to configure the 
StandardQueryNodeProcessorPipeline. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/Nodes/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/Nodes/package.md
index 1d29ff7..8a9e8d8 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/Nodes/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/Nodes/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard.Nodes
 summary: *content
 ---
@@ -25,4 +25,4 @@ Standard Lucene Query Nodes.
 
 ## Standard Lucene Query Nodes
 
- The package org.apache.lucene.queryparser.flexible.standard.nodes contains 
QueryNode classes that are used specifically for Lucene query node tree. Any 
other generic QueryNode is defined under org.apache.lucene.queryParser.nodes. 
\ No newline at end of file
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Standard.Nodes</tt> 
contains QueryNode classes that are used specifically for Lucene query node 
tree. Any other generic QueryNode is defined under  
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes>. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/Parser/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/Parser/package.md
index 0a1b41d..61c1da8 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/Parser/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/Parser/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard.Parser
 summary: *content
 ---
@@ -25,6 +25,6 @@ Lucene Query Parser.
 
 ## Lucene Query Parser
 
- The package org.apache.lucene.queryparser.flexible.standard.parser contains 
the query parser. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Standard.Parser</tt> 
contains the query parser. 
 
- This text parser only performs the syntax validation and creates an QueryNode 
tree from a query string. 
\ No newline at end of file
+This text parser only performs the syntax validation and creates an IQueryNode 
tree from a query string. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/Processors/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/Processors/package.md
index 93983aa..c50ffa4 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/Processors/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/Processors/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard.Processors
 summary: *content
 ---
@@ -25,6 +25,6 @@ Lucene Query Node Processors.
 
 ## Lucene Query Node Processors
 
- The package org.apache.lucene.queryparser.flexible.standard.processors 
contains every processor needed to assembly a pipeline that modifies the query 
node tree according to the actual Lucene queries. 
+The namespace <tt>Lucene.Net.QueryParsers.Flexible.Standard.Processors</tt> 
contains every processor needed to assembly a pipeline that modifies the query 
node tree according to the actual Lucene queries. 
 
- These processors are already assembled correctly in the 
StandardQueryNodeProcessorPipeline. 
\ No newline at end of file
+These processors are already assembled correctly in the 
StandardQueryNodeProcessorPipeline. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Flexible/Standard/package.md 
b/src/Lucene.Net.QueryParser/Flexible/Standard/package.md
index 645df6c..1ef8303 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Standard/package.md
+++ b/src/Lucene.Net.QueryParser/Flexible/Standard/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Flexible.Standard
 summary: *content
 ---
@@ -21,12 +21,12 @@ summary: *content
 -->
 
 
-Implementation of the {@linkplain org.apache.lucene.queryparser.classic Lucene 
classic query parser} using the flexible query parser frameworks
+Implementation of the [Lucene classic query 
parser](xref:Lucene.Net.QueryParsers.Classic) using the flexible query parser 
frameworks
 
 ## Lucene Flexible Query Parser Implementation
 
- The old Lucene query parser used to have only one class that performed all 
the parsing operations. In the new query parser structure, the parsing was 
divided in 3 steps: parsing (syntax), processing (semantic) and building. 
+The old Lucene query parser used to have only one class that performed all the 
parsing operations. In the new query parser structure, the parsing was divided 
in 3 steps: parsing (syntax), processing (semantic) and building. 
 
- The classes contained in the package org.apache.lucene.queryParser.standard 
are used to reproduce the same behavior as the old query parser. 
+The classes contained in the namespace 
<xref:Lucene.Net.QueryParsers.Flexible.Standard> are used to reproduce the same 
behavior as the old query parser. 
 
- Check <xref:Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser> to 
quick start using the Lucene query parser. 
\ No newline at end of file
+Check <xref:Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser> to 
quick start using the Lucene query parser. 
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Simple/package.md 
b/src/Lucene.Net.QueryParser/Simple/package.md
index 4739b1d..0e74bca 100644
--- a/src/Lucene.Net.QueryParser/Simple/package.md
+++ b/src/Lucene.Net.QueryParser/Simple/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Simple
 summary: *content
 ---
@@ -20,4 +20,4 @@ summary: *content
  limitations under the License.
 -->
 
-    A simple query parser for human-entered queries.
\ No newline at end of file
+A simple query parser for human-entered queries.
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/Xml/package.md 
b/src/Lucene.Net.QueryParser/Xml/package.md
index 66dcaf2..b996c6c 100644
--- a/src/Lucene.Net.QueryParser/Xml/package.md
+++ b/src/Lucene.Net.QueryParser/Xml/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParsers.Xml
 summary: *content
 ---
@@ -20,4 +20,4 @@ summary: *content
  limitations under the License.
 -->
 
-Parser that produces Lucene Query objects from XML streams.
\ No newline at end of file
+Parser that produces Lucene Query objects from XML documents.
\ No newline at end of file
diff --git a/src/Lucene.Net.QueryParser/overview.md 
b/src/Lucene.Net.QueryParser/overview.md
index 2576230..ad4d3c7 100644
--- a/src/Lucene.Net.QueryParser/overview.md
+++ b/src/Lucene.Net.QueryParser/overview.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.QueryParser
 title: Lucene.Net.QueryParser
 summary: *content
@@ -21,47 +21,50 @@ summary: *content
   limitations under the License.
   -->
 
-  Apache Lucene QueryParsers.
+Apache Lucene QueryParsers.
 
-  This module provides a number of queryparsers:
+This module provides a number of queryparsers:
 
-*   [Classic](#classic)
+*   [Classic](#classicxreflucenenetqueryparsersclassic)
 
-*   [Analyzing](#analyzing)
+*   [Analyzing](#analyzingxreflucenenetqueryparsersanalyzing)
 
-*   [Complex Phrase](#complexphrase)
+*   [Complex Phrase](#complex-phrasexreflucenenetqueryparserscomplexphrase)
 
-*   [Extendable](#extendable)
+*   [Extendable](#extendablexreflucenenetqueryparsersext)
 
 *   [Flexible](#flexible)
 
 *   [Surround](#surround)
 
-*   [XML](#xml)
+*   [XML](#xmlxreflucenenetqueryparsersxml)
 
 * * *
 
-## [Classic]()
+## [Classic](xref:Lucene.Net.QueryParsers.Classic)
+
+A Simple Lucene QueryParser implemented with JavaCC.
 
-  A Simple Lucene QueryParser implemented with JavaCC.
+## [Analyzing](xref:Lucene.Net.QueryParsers.Analyzing)
 
-## [Analyzing]()
+QueryParser that passes Fuzzy-, Prefix-, Range-, and WildcardQuerys through 
the given analyzer.
 
-  QueryParser that passes Fuzzy-, Prefix-, Range-, and WildcardQuerys through 
the given analyzer.
+## [Complex Phrase](xref:Lucene.Net.QueryParsers.ComplexPhrase)
 
-## [Complex Phrase]()
+QueryParser which permits complex phrase query syntax eg "(john jon jonathan~) 
peters*"
 
-  QueryParser which permits complex phrase query syntax eg "(john jon 
jonathan~) peters*"
+## [Extendable](xref:Lucene.Net.QueryParsers.Ext)
 
-## [Extendable]()
+Extendable QueryParser provides a simple and flexible extension mechanism by 
overloading query field names.
 
-  Extendable QueryParser provides a simple and flexible extension mechanism by 
overloading query field names.
+## Flexible
 
-## [Flexible]()
+This project contains the new Lucene query parser implementation, which 
matches the syntax of the core QueryParser but offers a more modular 
architecture to enable customization. 
 
- This project contains the new Lucene query parser implementation, which 
matches the syntax of the core QueryParser but offers a more modular 
architecture to enable customization. 
+It's currently divided in 2 main namespaces:
 
- It's currently divided in 2 main packages: * 
<xref:Lucene.Net.QueryParsers.Flexible.Core>: it contains the query parser API 
classes, which should be extended by query parser implementations. * 
<xref:Lucene.Net.QueryParsers.Flexible.Standard>: it contains the current 
Lucene query parser implementation using the new query parser API. 
+* <xref:Lucene.Net.QueryParsers.Flexible.Core>: it contains the query parser 
API classes, which should be extended by query parser implementations.
+* <xref:Lucene.Net.QueryParsers.Flexible.Standard>: it contains the current 
Lucene query parser implementation using the new query parser API. 
 
 ### Features
 
@@ -82,7 +85,7 @@ summary: *content
 6.  Standard Builders - convert QueryNode's into several lucene 
             representations. Supported conversion is using a 2.4 compatible 
logic
 
-7.  QueryNode tree's can be converted to a lucene 2.4 syntax string, using 
toQueryString                          
+7.  QueryNode tree's can be converted to a lucene 2.4 syntax string, using 
ToQueryString()                          
 
 ### Design
 
@@ -102,8 +105,8 @@ summary: *content
 <dt>QueryParser</dt>
 <dd>
 This layer is the text parsing layer which simply transforms the
-query text string into a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> tree. Every text 
parser
-must implement the interface 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser.SyntaxParser>.
+query text string into a 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> tree. Every text 
parser
+must implement the interface 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Parser.ISyntaxParser>.
 Lucene default implementations implements it using JavaCC.
 </dd>
 
@@ -117,15 +120,15 @@ terms.
 
 <dt>QueryBuilder</dt>
 <dd>
-The third layer is a configurable map of builders, which map 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode> types to its 
specific 
-builder that will transform the QueryNode into Lucene Query object.
+The third layer is a configurable map of builders, which map 
<xref:Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode> types to its 
specific 
+builder that will transform the IQueryNode into Lucene Query object.
 </dd>
 
 </dl>
 
- Furthermore, the query parser uses flexible configuration objects. It also 
uses message classes that allow to attach resource bundles. This makes it 
possible to translate messages, which is an important feature of a query 
parser. 
+Furthermore, the query parser uses flexible configuration objects. It also 
uses message classes that allow to attach resource bundles. This makes it 
possible to translate messages, which is an important feature of a query 
parser. 
 
- This design allows to develop different query syntaxes very quickly. 
+This design allows to develop different query syntaxes very quickly. 
 
 ### StandardQueryParser and QueryParserWrapper
 
@@ -140,16 +143,25 @@ you don't need to worry about dealing with those.
 
 <xref:Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser> usage:
 
-          StandardQueryParser qpHelper = new StandardQueryParser();
-          StandardQueryConfigHandler config =  
qpHelper.getQueryConfigHandler();
-          config.setAllowLeadingWildcard(true);
-          config.setAnalyzer(new WhitespaceAnalyzer());
-          Query query = qpHelper.parse("apache AND lucene", "defaultField");
 
-## [Surround]()
+```cs
+const LuceneVersion matchVersion = LuceneVersion.LUCENE_48;
+StandardQueryParser qpHelper = new StandardQueryParser();
+QueryConfigHandler config = qpHelper.QueryConfigHandler;
+config.Set(ConfigurationKeys.ALLOW_LEADING_WILDCARD, true);
+config.Set(ConfigurationKeys.ANALYZER, new WhitespaceAnalyzer(matchVersion));
+Query query = qpHelper.Parse("apache AND lucene", "defaultField");
+```
+
+## Surround
+
+A QueryParser that supports the Span family of queries as well as pre and 
infix notation.
+
+It's divided in 2 main namespaces:
 
- A QueryParser that supports the Span family of queries as well as pre and 
infix notation. 
+* <xref:Lucene.Net.QueryParsers.Surround.Parser>
+* <xref:Lucene.Net.QueryParsers.Surround.Query>
 
-## [XML]()
+## [XML](xref:Lucene.Net.QueryParsers.Xml)
 
-A QueryParser that produces Lucene Query objects from XML streams.
\ No newline at end of file
+A QueryParser that produces Lucene Query objects from XML documents.
\ No newline at end of file
diff --git a/src/Lucene.Net.Replicator/Http/package.md 
b/src/Lucene.Net.Replicator/Http/package.md
index 4504188..fd9797b 100644
--- a/src/Lucene.Net.Replicator/Http/package.md
+++ b/src/Lucene.Net.Replicator/Http/package.md
@@ -1,4 +1,4 @@
----
+---
 uid: Lucene.Net.Replicator.Http
 summary: *content
 ---
@@ -21,4 +21,4 @@ summary: *content
  limitations under the License.
 -->
 
-# HTTP replication implementation
+HTTP replication implementation
diff --git a/src/Lucene.Net.Replicator/Http/replicator.md 
b/src/Lucene.Net.Replicator/Http/replicator.md
deleted file mode 100644
index 0de6006..0000000
--- a/src/Lucene.Net.Replicator/Http/replicator.md
+++ /dev/null
@@ -1,162 +0,0 @@
-# Using the ReplicatorService
-
-Because therer are a number of different hosting frameworks to choose from on 
.NET, and that they don't implement common
-interfaceses or base classes for requests and responses, the ReplicatorService 
instead provides abstractions so that it can
-be integrated easily into any of these framworks.
-
-So to integrate the replicator into any existing hosting framworks, the 
IReplicationRequest and IReplicationResponse interfaces 
-must be implemented for a choosen framwork.
-
-## An AspNetCore Implementation
-
-Below is an example of how these wrappers can be implemented for the 
AspNetCore framwork.
-The example only convers the absolutely minimum needed in order for it to 
become functional within AspNetCore.
-
-It does not go as far as to implement custom middleware, action results for 
controllers or anything else, while this
-would be a natural to do, such implementations extends beyond the scope of 
this document.
-
-#### AspNetCore Request Wrapper
-
-The first thing to do is to wrap the AspNetCore Request object in a class that 
implements the IReplicationRequest interface.
-This is very straight forward.
-
-```csharp
-// Wrapper class for the Microsoft.AspNetCore.Http.HttpRequest
-public class AspNetCoreReplicationRequest : IReplicationRequest
-{
-    private readonly HttpRequest request;
-
-    // Inject the actual request object in the constructor.
-    public AspNetCoreReplicationRequest(HttpRequest request) 
-        => this.request = request;
-
-    // Provide the full path relative to the host.
-    // In the common case in AspNetCore this should just return the full path, 
so PathBase + Path are concatenated and returned.
-    // 
-    // The path expected by the ReplicatorService is 
{context}/{shard}/{action} where:
-    //  - action may be Obtain, Release or Update
-    //  - context is the same context that is provided to the 
ReplicatorService constructor and defaults to '/replicate'
-    public string Path 
-        => request.PathBase + request.Path;
-
-    // Return values for parameters used by the ReplicatorService
-    // The ReplicatorService will call this with:
-    // - version: The index revision
-    // - sessionid: The ID of the session
-    // - source: The source index for the files
-    // - filename: The file name
-    //
-    // In this implementation a exception is thrown in the case that 
parameters are provided multiple times.
-    public string QueryParam(string name) 
-        => request.Query[name].SingleOrDefault();
-}
-```
-
-#### AspNetCore Response Wrapper
-
-Secondly the AspNetCore Response object is wrapped in a class that implements 
the IReplicationResponse interface.
-This is also very straight forward.
-
-```csharp
-// Wrapper class for the Microsoft.AspNetCore.Http.HttpResponse
-public class AspNetCoreReplicationResponse : IReplicationResponse
-{
-    private readonly HttpResponse response;
-    
-    // Inject the actual response object in the constructor.
-    public AspNetCoreReplicationResponse(HttpResponse response)
-        => this.response = response;
-
-    // Getter and Setter for the http Status code, in case of failure the 
ReplicatorService will set this
-    // Property.
-    public int StatusCode
-    {
-        get => response.StatusCode;
-        set => response.StatusCode = value;
-    }
-
-    // Return a stream where the ReplicatorService can write to for the 
response.
-    // Depending on the action either the file or the sesssion token will be 
written to this stream.
-    public Stream Body => response.Body;
-
-    // Called when the ReplicatorService is done writing data to the response.
-    // Here it is mapped to the flush method on the "body" stream on the 
response.
-    public void Flush() => response.Body.Flush();
-}
-```
-
-#### AspNetCore Utility Extension Method
-
-This part is not nessesary, however by providing a extension method as a 
overload to the ReplicatorService Perform method
-that instead takes the AspNetCore HttpRequest and HttpResponse response 
objects, it's easier to call the ReplicatorService
-from either AspNetCore Mvc controllers, inside of middleare or for the 
absolute minimal solution directly in the delegate of
-a IApplicationBuilder.Run method.
-
-```csharp
-public static class AspNetCoreReplicationServiceExtentions
-{
-    // Optionally, provide a extension method for calling the perform method 
directly using the specific request
-    // and response objects from AspNetCore
-    public static void Perform(this ReplicationService self, HttpRequest 
request, HttpResponse response)
-        => self.Perform(
-            new AspNetCoreReplicationRequest(request),
-            new AspNetCoreReplicationResponse(response));
-}
-```
-
-## Using the Implementation
-
-Now the implementation can be used wihin AspNetCore in order to service Lucene 
Replicator requests over http.
-
-In order to enable replication of indexes, the IndewWriter that writes the 
index should be created with a `SnapshotDeletionPolicy`.
-
-```csharp
-IndexWriterConfig config = new IndexWriterConfig(...ver..., new 
StandardAnalyzer(...ver...));
-config.IndexDeletionPolicy = new 
SnapshotDeletionPolicy(config.IndexDeletionPolicy);
-IndexWriter writer = new IndexWriter(FSDirectory.Open("..."), config);
-```
-
-For the absolute minimal solution we can wire the ReplicatorService up on the 
server side as:
-
-```csharp
-LocalReplicator replicator = new LocalReplicator(); 
-ReplicatorService service = new ReplicationService(new Dictionary<string, 
IReplicator>{
-    ["shard_name"] = replicator
-}, "/api/replicate");
-
-app.Map("/api/replicate", builder => {
-    builder.Run(async context => {
-        await Task.Yield();
-        service.Perform(context.Request, context.Response); 
-    });
-});
-```
-
-Now in order to publish a Revision call the publish method in the 
LocalReplicator:
-
-```csharp
-IndexWriter writer = ...;
-LocalReplicator replicator = ...;
-replicator.Publish(new IndexRevision(writer));
-```
-
-On the client side create a new HttpReplicator and start replicating, e.g.:
-
-```csharp
-IReplicator replicator = new 
HttpReplicator("http://{host}:{port}/api/replicate/shard_name";);
-ReplicationClient client = new ReplicationClient(
-    replicator, 
-    new IndexReplicationHandler(
-        FSDirectory.Open(...directory...), 
-        () => ...onUpdate...), 
-        new PerSessionDirectoryFactory(...temp-working-directory...));
-
-//Now either start the Update Thread or do manual pulls periodically.
-client.UpdateNow(); //Manual Pull
-client.StartUpdateThread(1000, "Replicator Thread"); //Pull automatically 
every second if there is any changes.
-```
-
-From here it would be natural to use a SearchManager over the directory in 
order to get Searchers updated outomatically.
-But this cannot be created before the first actual replication as the 
SearchManager will fail because there is no index.
-
-We can use the onUpdate handler to perform the first initialization in this 
case.
\ No newline at end of file
diff --git a/src/Lucene.Net.Replicator/package.md 
b/src/Lucene.Net.Replicator/package.md
index 5d72da3..6db5ab5 100644
--- a/src/Lucene.Net.Replicator/package.md
+++ b/src/Lucene.Net.Replicator/package.md
@@ -1,50 +1,35 @@
----
+---
 uid: Lucene.Net.Replicator
 summary: *content
 ---
 
-<!-- 
- 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.
--->
-
 # Files replication framework
 
 The
-[Replicator](Replicator.html) allows replicating files between a server and 
client(s). Producers publish
-[revisions](Revision.html) and consumers update to the latest revision 
available.
-[ReplicationClient](ReplicationClient.html) is a helper utility for performing 
the update operation. It can
+[Replicator](xref:Lucene.Net.Replicator.IReplicator) allows replicating files 
between a server and client(s). Producers publish
+[revisions](xref:Lucene.Net.Replicator.IRevision) and consumers update to the 
latest revision available.
+[ReplicationClient](xref:Lucene.Net.Replicator.ReplicationClient) is a helper 
utility for performing the update operation. It can
 be invoked either
-[manually](ReplicationClient.html#updateNow()) or periodically by
-[starting an update thread](ReplicationClient.html#startUpdateThread(long, 
java.lang.String)).
-[HttpReplicator](http/HttpReplicator.html) can be used to replicate revisions 
by consumers that reside on
+[manually](xref:Lucene.Net.Replicator.ReplicationClient#Lucene_Net_Replicator_ReplicationClient_UpdateNow)
 or periodically by
+[starting an update 
thread](xref:Lucene.Net.Replicator.ReplicationClient#Lucene_Net_Replicator_ReplicationClient_StartUpdateThread_System_Int64_System_String_).
+[HttpReplicator](xref:Lucene.Net.Replicator.Http.HttpReplicator) can be used 
to replicate revisions by consumers that reside on
 a different node than the producer.
 
 The replication framework supports replicating any type of files, with 
built-in support for a single search index as
 well as an index and taxonomy pair. For a single index, the application should 
publish an
-[IndexRevision](IndexRevision.html) and set
-[IndexReplicationHandler](IndexReplicationHandler.html) on the client. For an 
index and taxonomy pair, the
-application should publish an 
[IndexAndTaxonomyRevision](IndexAndTaxonomyRevision.html) and set
-[IndexAndTaxonomyReplicationHandler](IndexAndTaxonomyReplicationHandler.html) 
on the client.
+[IndexRevision](xref:Lucene.Net.Replicator.IndexRevision) and set
+[IndexReplicationHandler](xref:Lucene.Net.Replicator.IndexReplicationHandler) 
on the client. For an index and taxonomy pair, the
+application should publish an 
[IndexAndTaxonomyRevision](xref:Lucene.Net.Replicator.IndexAndTaxonomyRevision) 
and set
+[IndexAndTaxonomyReplicationHandler](xref:Lucene.Net.Replicator.IndexAndTaxonomyReplicationHandler)
 on the client.
 
 When the replication client detects that there is a newer revision available, 
it copies the files of the revision and
-then invokes the handler to complete the operation (e.g. copy the files to the 
index directory, fsync them, reopen an
+then invokes the handler to complete the operation (e.g. copy the files to the 
index directory, sync them, reopen an
 index reader etc.). By default, only files that do not exist in the handler's
-[current revision 
files](ReplicationClient.ReplicationHandler.html#currentRevisionFiles()) are 
copied,
+[current revision 
files](xref:Lucene.Net.Replicator.IReplicationHandler.html#Lucene_Net_Replicator_IReplicationHandler_CurrentRevisionFiles)
 are copied,
 however this can be overridden by extending the client.
 
+<!-- Old Code Sample - not sure whether this is useful
+```cs
 An example usage of the Replicator:
 
 // ++++++++++++++ SERVER SIDE ++++++++++++++ //
@@ -66,4 +51,167 @@ ReplicationClient client = new 
ReplicationClient(replicator, handler, factory);
 client.updateNow();
 
 // or, periodically
-client.startUpdateThread(100); // check for update every 100 milliseconds
\ No newline at end of file
+client.startUpdateThread(100); // check for update every 100 milliseconds
+```
+-->
+
+# Using the ReplicatorService
+
+Because there are a number of different hosting frameworks to choose from on 
.NET and they don't implement common
+abstractions for requests and responses, the ReplicatorService provides 
abstractions so that it can
+be integrated easily into any of these frameworks.
+
+To integrate the replicator into an existing hosting framework, the 
<xref:Lucene.Net.Replicator.Http.Abstractions.IReplicationRequest> and 
<xref:Lucene.Net.Replicator.Http.Abstractions.IReplicationResponse> interfaces 
must be implemented for the chosen framework.
+
+## An ASP.NET Core Implementation
+
+Below is an example of how these wrappers can be implemented for the ASP.NET 
Core framework.
+The example only covers the absolute minimum needed in order for it to become 
functional within ASP.NET Core.
+
+It does not go as far as to implement custom middleware, action results for 
controllers or anything else, while this
+would be a natural to do, such implementations extends beyond the scope of 
this document.
+
+#### ASP.NET Core Request Wrapper
+
+The first thing to do is to wrap the ASP.NET Core Request object in a class 
that implements the 
<xref:Lucene.Net.Replicator.Http.Abstractions.IReplicationRequest> interface.
+This is very straight forward.
+
+```cs
+// Wrapper class for the Microsoft.AspNetCore.Http.HttpRequest
+public class AspNetCoreReplicationRequest : IReplicationRequest
+{
+    private readonly HttpRequest request;
+
+    // Inject the actual request object in the constructor.
+    public AspNetCoreReplicationRequest(HttpRequest request) 
+        => this.request = request;
+
+    // Provide the full path relative to the host.
+    // In the common case in AspNetCore this should just return the full path, 
so PathBase + Path are concatenated and returned.
+    // 
+    // The path expected by the ReplicatorService is 
{context}/{shard}/{action} where:
+    //  - action may be Obtain, Release or Update
+    //  - context is the same context that is provided to the 
ReplicatorService constructor and defaults to '/replicate'
+    public string Path 
+        => request.PathBase + request.Path;
+
+    // Return values for parameters used by the ReplicatorService
+    // The ReplicatorService will call this with:
+    // - version: The index revision
+    // - sessionid: The ID of the session
+    // - source: The source index for the files
+    // - filename: The file name
+    //
+    // In this implementation a exception is thrown in the case that 
parameters are provided multiple times.
+    public string QueryParam(string name) 
+        => request.Query[name].SingleOrDefault();
+}
+```
+
+#### ASP.NET Core Response Wrapper
+
+Secondly the ASP.NET Core Response object is wrapped in a class that 
implements the 
<xref:Lucene.Net.Replicator.Http.Abstractions.IReplicationResponse> interface.
+This is also very straight forward.
+
+```cs
+// Wrapper class for the Microsoft.AspNetCore.Http.HttpResponse
+public class AspNetCoreReplicationResponse : IReplicationResponse
+{
+    private readonly HttpResponse response;
+    
+    // Inject the actual response object in the constructor.
+    public AspNetCoreReplicationResponse(HttpResponse response)
+        => this.response = response;
+
+    // Getter and Setter for the http Status code, in case of failure the 
ReplicatorService will set this
+    // Property.
+    public int StatusCode
+    {
+        get => response.StatusCode;
+        set => response.StatusCode = value;
+    }
+
+    // Return a stream where the ReplicatorService can write to for the 
response.
+    // Depending on the action either the file or the sesssion token will be 
written to this stream.
+    public Stream Body => response.Body;
+
+    // Called when the ReplicatorService is done writing data to the response.
+    // Here it is mapped to the flush method on the "body" stream on the 
response.
+    public void Flush() => response.Body.Flush();
+}
+```
+
+#### ASP.NET Core Utility Extension Method
+
+This part is not nessesary, however by providing a extension method as a 
overload to the ReplicatorService Perform method
+that instead takes the ASP.NET Core HttpRequest and HttpResponse response 
objects, it's easier to call the ReplicatorService
+from either ASP.NET Core MVC controllers, inside of middleare or for the 
absolute minimal solution directly in the delegate parameter of a 
IApplicationBuilder.Run() method.
+
+```cs
+public static class AspNetCoreReplicationServiceExtentions
+{
+    // Optionally, provide a extension method for calling the perform method 
directly using the specific request
+    // and response objects from AspNetCore
+    public static void Perform(this ReplicationService self, HttpRequest 
request, HttpResponse response)
+        => self.Perform(
+            new AspNetCoreReplicationRequest(request),
+            new AspNetCoreReplicationResponse(response));
+}
+```
+
+## Using the Implementation
+
+Now the implementation can be used within ASP.NET Core in order to service 
Lucene.NET Replicator requests over HTTP.
+
+In order to enable replication of indexes, the 
<xref:Lucene.Net.Index.IndexWriter> that writes the index should be created 
with a <xref:Lucene.Net.Index.SnapshotDeletionPolicy>.
+
+```cs
+IndexWriterConfig config = new IndexWriterConfig(...ver..., new 
StandardAnalyzer(...ver...));
+config.IndexDeletionPolicy = new 
SnapshotDeletionPolicy(config.IndexDeletionPolicy);
+IndexWriter writer = new IndexWriter(FSDirectory.Open("..."), config);
+```
+
+For the absolute minimal solution we can wire the 
<xref:Lucene.Net.Replicator.Http.ReplicationService> up on the server side as:
+
+```cs
+LocalReplicator replicator = new LocalReplicator(); 
+ReplicatorService service = new ReplicationService(new Dictionary<string, 
IReplicator>{
+    ["shard_name"] = replicator
+}, "/api/replicate");
+
+app.Map("/api/replicate", builder => {
+    builder.Run(async context => {
+        await Task.Yield();
+        service.Perform(context.Request, context.Response); 
+    });
+});
+```
+
+Now in order to publish a [Revision](xref:Lucene.Net.Replicator.IRevision) 
call the 
[Publish()](xref:Lucene.Net.Replicator.LocalReplicator#Lucene_Net_Replicator_LocalReplicator_Publish_Lucene_Net_Replicator_IRevision_)
 method in the <xref:Lucene.Net.Replicator.LocalReplicator>:
+
+```cs
+IndexWriter writer = ...;
+LocalReplicator replicator = ...;
+replicator.Publish(new IndexRevision(writer));
+```
+
+On the client side create a new 
<xref:Lucene.Net.Replicator.Http.HttpReplicator> and start replicating, e.g.:
+
+```cs
+IReplicator replicator = new 
HttpReplicator("http://{host}:{port}/api/replicate/shard_name";);
+ReplicationClient client = new ReplicationClient(
+    replicator, 
+    new IndexReplicationHandler(
+        FSDirectory.Open(...directory...), 
+        () => ...onUpdate...), 
+        new PerSessionDirectoryFactory(...temp-working-directory...));
+
+//Now either start the Update Thread or do manual pulls periodically.
+client.UpdateNow(); //Manual Pull
+client.StartUpdateThread(1000, "Replicator Thread"); //Pull automatically 
every second if there is any changes.
+```
+
+From here it would be natural to use a 
<xref:Lucene.Net.Search.SearcherManager> over the directory in order to get 
Searchers updated automatically.
+But this cannot be created before the first actual replication as the 
<xref:Lucene.Net.Search.SearcherManager> will fail because there is no index.
+
+We can use the onUpdate handler to perform the first initialization in this 
case.
diff --git a/websites/apidocs/index.md b/websites/apidocs/index.md
index 3b9e45f..a72fdd3 100644
--- a/websites/apidocs/index.md
+++ b/websites/apidocs/index.md
@@ -60,7 +60,7 @@ on some of the conceptual or inner details of Lucene:
 - <xref:Lucene.Net.Misc> - Index tools and other miscellaneous code
 - <xref:Lucene.Net.Queries> - Filters and Queries that add to core Lucene
 - <xref:Lucene.Net.QueryParser> - Text to Query parsers and parsing framework
-- <xref:Lucene.Net.Replicator> Files replication utility
+- <xref:Lucene.Net.Replicator> - Files replication utility
 - <xref:Lucene.Net.Sandbox> - Various third party contributions and new ideas
 - [Lucene.Net.Spatial](xref:Lucene.Net.Spatial) - Geospatial search
 - <xref:Lucene.Net.Suggest> - Auto-suggest and Spell-checking support

Reply via email to