blob: b99cc1c507d34ebed99bf7220c49212c31844666 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Namespace Lucene.Net.Analysis.Util
| Apache Lucene.NET 4.8.0-beta00010 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.Analysis.Util
| Apache Lucene.NET 4.8.0-beta00010 Documentation ">
<meta name="generator" content="docfx 2.56.0.0">
<link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
<meta property="docfx:navrel" content="toc.html">
<meta property="docfx:tocrel" content="analysis-common/toc.html">
<meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search">
<ul class="level0 breadcrumb">
<li>
<a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
<span id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</span>
</li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items">
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
</div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Lucene.Net.Analysis.Util">
<h1 id="Lucene_Net_Analysis_Util" data-uid="Lucene.Net.Analysis.Util" class="text-break">Namespace Lucene.Net.Analysis.Util
</h1>
<div class="markdown level0 summary"><!--
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.
-->
<p>Utility functions for text analysis.</p>
</div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">Classes
</h3>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.AbstractAnalysisFactory.html">AbstractAnalysisFactory</a></h4>
<section><p>Abstract parent class for analysis factories <a class="xref" href="Lucene.Net.Analysis.Util.TokenizerFactory.html">TokenizerFactory</a>,
<a class="xref" href="Lucene.Net.Analysis.Util.TokenFilterFactory.html">TokenFilterFactory</a> and <a class="xref" href="Lucene.Net.Analysis.Util.CharFilterFactory.html">CharFilterFactory</a>.
<p>
The typical lifecycle for a factory consumer is:
<ul><li>Create factory via its constructor (or via XXXFactory.ForName)</li><li>(Optional) If the factory uses resources such as files,
<a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoaderAware.html#Lucene_Net_Analysis_Util_IResourceLoaderAware_Inform_Lucene_Net_Analysis_Util_IResourceLoader_">Inform(IResourceLoader)</a> is called to initialize those resources.</li><li>Consumer calls create() to obtain instances.</li></ul>
</p></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.BufferedCharFilter.html">BufferedCharFilter</a></h4>
<section><p>LUCENENET specific class to mimic Java&apos;s BufferedReader (that is, a reader that is seekable)
so it supports Mark() and Reset() (which are part of the Java Reader class), but also
provide the Correct() method of BaseCharFilter.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharacterUtils.html">CharacterUtils</a></h4>
<section><p><a class="xref" href="Lucene.Net.Analysis.Util.CharacterUtils.html">CharacterUtils</a> provides a unified interface to Character-related
operations to implement backwards compatible character operations based on a
<span class="xref">Lucene.Net.Util.LuceneVersion</span> instance.</p>
<div class="lucene-block lucene-internal">This is a Lucene.NET INTERNAL API, use at your own risk</div></section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharacterUtils.CharacterBuffer.html">CharacterUtils.CharacterBuffer</a></h4>
<section><p>A simple IO buffer to use with
<a class="xref" href="Lucene.Net.Analysis.Util.CharacterUtils.html#Lucene_Net_Analysis_Util_CharacterUtils_Fill_Lucene_Net_Analysis_Util_CharacterUtils_CharacterBuffer_System_IO_TextReader_">Fill(CharacterUtils.CharacterBuffer, TextReader)</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap.html">CharArrayMap</a></h4>
<section></section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.html">CharArrayMap&lt;TValue&gt;</a></h4>
<section><p>A simple class that stores key <span class="xref">System.String</span>s as <span class="xref">char[]</span>&apos;s in a
hash table. Note that this is not a general purpose
class. For example, it cannot remove items from the
map, nor does it resize its hash table to be smaller,
etc. It is designed to be quick to retrieve items
by <span class="xref">char[]</span> keys without the necessity of converting
to a <span class="xref">System.String</span> first.</p>
<p><a name="version"></a>
<p>You must specify the required <span class="xref">Lucene.Net.Util.LuceneVersion</span>
compatibility when creating <a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap.html">CharArrayMap</a>:
<ul><li> As of 3.1, supplementary characters are
properly lowercased.</li></ul>
Before 3.1 supplementary characters could not be
lowercased correctly due to the lack of Unicode 4
support in JDK 1.4. To use instances of
<a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap.html">CharArrayMap</a> with the behavior before Lucene
3.1 pass a <span class="xref">Lucene.Net.Util.LuceneVersion</span> &lt; 3.1 to the constructors.
</p></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.EntryIterator.html">CharArrayMap&lt;TValue&gt;.EntryIterator</a></h4>
<section><p>public iterator class so efficient methods are exposed to users</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.EntrySet_.html">CharArrayMap&lt;TValue&gt;.EntrySet_</a></h4>
<section><p>public EntrySet_ class so efficient methods are exposed to users</p>
<p>NOTE: In .NET this was renamed to EntrySet_ because it conflicted with the
method EntrySet(). Since there is also an extension method named <span class="xref">IDictionary{K,V}.EntrySet()</span>
that this class needs to override, changing the name of the method was not
possible because the extension method would produce incorrect results if it were
inadvertently called, leading to hard-to-diagnose bugs.</p>
<p>Another difference between this set and the Java counterpart is that it implements
<span class="xref">System.Collections.Generic.ICollection&lt;T&gt;</span> rather than <span class="xref">System.Collections.Generic.ISet&lt;T&gt;</span> so we don&apos;t have to implement
a bunch of methods that we aren&apos;t really interested in. The <a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.html#Lucene_Net_Analysis_Util_CharArrayMap_1_Keys">Keys</a> and <a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.html#Lucene_Net_Analysis_Util_CharArrayMap_1_Values">Values</a>
properties both return <span class="xref">System.Collections.Generic.ICollection&lt;T&gt;</span>, and while there is no <a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMap-1.html#Lucene_Net_Analysis_Util_CharArrayMap_1_EntrySet">EntrySet()</a> method
or property in .NET, if there were it would certainly return <span class="xref">System.Collections.Generic.ICollection&lt;T&gt;</span>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArrayMapExtensions.html">CharArrayMapExtensions</a></h4>
<section><p>LUCENENET specific extension methods for CharArrayMap</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArraySet.html">CharArraySet</a></h4>
<section><p>A simple class that stores <span class="xref">System.String</span>s as <span class="xref">char[]</span>&apos;s in a
hash table. Note that this is not a general purpose
class. For example, it cannot remove items from the
set, nor does it resize its hash table to be smaller,
etc. It is designed to be quick to test if a <span class="xref">char[]</span>
is in the set without the necessity of converting it
to a <span class="xref">System.String</span> first.</p>
<p><a name="version"></a>
<p>You must specify the required <span class="xref">Lucene.Net.Util.LuceneVersion</span>
compatibility when creating <a class="xref" href="Lucene.Net.Analysis.Util.CharArraySet.html">CharArraySet</a>:
<ul>
<li> As of 3.1, supplementary characters are
properly lowercased.</li>
</ul>
Before 3.1 supplementary characters could not be
lowercased correctly due to the lack of Unicode 4
support in JDK 1.4. To use instances of
<a class="xref" href="Lucene.Net.Analysis.Util.CharArraySet.html">CharArraySet</a> with the behavior before Lucene
3.1 pass a <span class="xref">Lucene.Net.Util.LuceneVersion</span> to the constructors.
</p>
<p>
<em>Please note:</em> This class implements <span class="xref">System.Collections.Generic.ISet&lt;T&gt;</span> but
does not behave like it should in all cases. The generic type is
<span class="xref">System.String</span>, because you can add any object to it,
that has a string representation (which is converted to a string). The add methods will use
<span class="xref">System.Object.ToString()</span> and store the result using a <span class="xref">char[]</span>
buffer. The same behavior have the <a class="xref" href="Lucene.Net.Analysis.Util.CharArraySet.html#Lucene_Net_Analysis_Util_CharArraySet_Contains_System_String_">Contains(String)</a> methods.
The <a class="xref" href="Lucene.Net.Analysis.Util.CharArraySet.html#Lucene_Net_Analysis_Util_CharArraySet_GetEnumerator">GetEnumerator()</a> returns an <span class="xref">IEnumerator{char[]}</span>
</p></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharArraySetExtensions.html">CharArraySetExtensions</a></h4>
<section><p>LUCENENET specific extension methods for CharArraySet</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharFilterFactory.html">CharFilterFactory</a></h4>
<section><p>Abstract parent class for analysis factories that create <span class="xref">Lucene.Net.Analysis.CharFilter</span>
instances.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a></h4>
<section><p>An abstract base class for simple, character-oriented tokenizers.
<p>
You must specify the required <span class="xref">Lucene.Net.Util.LuceneVersion</span> compatibility
when creating <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a>:
<ul><li>As of 3.1, <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> uses an int based API to normalize and
detect token codepoints. See <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html#Lucene_Net_Analysis_Util_CharTokenizer_IsTokenChar_System_Int32_">IsTokenChar(Int32)</a> and
<a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html#Lucene_Net_Analysis_Util_CharTokenizer_Normalize_System_Int32_">Normalize(Int32)</a> for details.</li></ul>
</p>
<p>
A new <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> API has been introduced with Lucene 3.1. This API
moved from UTF-16 code units to UTF-32 codepoints to eventually add support
for <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Character.html#supplementary">supplementary characters</a>. The old <em>char</em> based API has been
deprecated and should be replaced with the <em>int</em> based methods
<a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html#Lucene_Net_Analysis_Util_CharTokenizer_IsTokenChar_System_Int32_">IsTokenChar(Int32)</a> and <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html#Lucene_Net_Analysis_Util_CharTokenizer_Normalize_System_Int32_">Normalize(Int32)</a>.
</p>
<p>
As of Lucene 3.1 each <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> - constructor expects a
<span class="xref">Lucene.Net.Util.LuceneVersion</span> argument. Based on the given <span class="xref">Lucene.Net.Util.LuceneVersion</span> either the new
API or a backwards compatibility layer is used at runtime. For
<span class="xref">Lucene.Net.Util.LuceneVersion</span> &lt; 3.1 the backwards compatibility layer ensures correct
behavior even for indexes build with previous versions of Lucene. If a
<span class="xref">Lucene.Net.Util.LuceneVersion</span> &gt;= 3.1 is used <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> requires the new API to
be implemented by the instantiated class. Yet, the old <em>char</em> based API
is not required anymore even if backwards compatibility must be preserved.
<a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> subclasses implementing the new API are fully backwards
compatible if instantiated with <span class="xref">Lucene.Net.Util.LuceneVersion</span> &lt; 3.1.
</p>
<p>
<strong>Note:</strong> If you use a subclass of <a class="xref" href="Lucene.Net.Analysis.Util.CharTokenizer.html">CharTokenizer</a> with <span class="xref">Lucene.Net.Util.LuceneVersion</span> &gt;=
3.1 on an index build with a version &lt; 3.1, created tokens might not be
compatible with the terms in your index.
</p></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.ClasspathResourceLoader.html">ClasspathResourceLoader</a></h4>
<section><p>Simple <a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoader.html">IResourceLoader</a> that uses <span class="xref">System.Reflection.Assembly.GetManifestResourceStream(System.String)</span>
and <span class="xref">System.Reflection.Assembly.GetType(System.String)</span> to open resources and
<span class="xref">System.Type</span>s, respectively.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.ElisionFilter.html">ElisionFilter</a></h4>
<section><p>Removes elisions from a <span class="xref">Lucene.Net.Analysis.TokenStream</span>. For example, &quot;l&apos;avion&quot; (the plane) will be
tokenized as &quot;avion&quot; (plane).
<p>
<a href="http://fr.wikipedia.org/wiki/%C3%89lision">Elision in Wikipedia</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.ElisionFilterFactory.html">ElisionFilterFactory</a></h4>
<section><p>Factory for <a class="xref" href="Lucene.Net.Analysis.Util.ElisionFilter.html">ElisionFilter</a>.</p>
<pre><code>&lt;fieldType name=&quot;text_elsn&quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;>
&lt;analyzer>
&lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot;/>
&lt;filter class=&quot;solr.LowerCaseFilterFactory&quot;/>
&lt;filter class=&quot;solr.ElisionFilterFactory&quot;
articles=&quot;stopwordarticles.txt&quot; ignoreCase=&quot;true&quot;/>
&lt;/analyzer>
&lt;/fieldType></code></pre>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.FilesystemResourceLoader.html">FilesystemResourceLoader</a></h4>
<section><p>Simple <a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoader.html">IResourceLoader</a> that opens resource files
from the local file system, optionally resolving against
a base directory.</p>
<p>This loader wraps a delegate <a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoader.html">IResourceLoader</a>
that is used to resolve all files, the current base directory
does not contain. <a class="xref" href="Lucene.Net.Analysis.Util.FilesystemResourceLoader.html#Lucene_Net_Analysis_Util_FilesystemResourceLoader_NewInstance__1_System_String_">NewInstance&lt;T&gt;(String)</a> is always resolved
against the delegate, as an <span class="xref">System.Assembly</span> is needed.
</p>
<p>You can chain several <a class="xref" href="Lucene.Net.Analysis.Util.FilesystemResourceLoader.html">FilesystemResourceLoader</a>s
to allow lookup of files in more than one base directory.
</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.FilteringTokenFilter.html">FilteringTokenFilter</a></h4>
<section><p>Abstract base class for TokenFilters that may remove tokens.
You have to implement <a class="xref" href="Lucene.Net.Analysis.Util.FilteringTokenFilter.html#Lucene_Net_Analysis_Util_FilteringTokenFilter_Accept">Accept()</a> and return a boolean if the current
token should be preserved. <a class="xref" href="Lucene.Net.Analysis.Util.FilteringTokenFilter.html#Lucene_Net_Analysis_Util_FilteringTokenFilter_IncrementToken">IncrementToken()</a> uses this method
to decide if a token should be passed to the caller.
<p>
As of Lucene 4.4, an
<span class="xref">System.ArgumentException</span> is thrown when trying to disable position
increments when filtering terms.
</p></p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.OpenStringBuilder.html">OpenStringBuilder</a></h4>
<section><p>A StringBuilder that allows one to access the array.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.RollingCharBuffer.html">RollingCharBuffer</a></h4>
<section><p>Acts like a forever growing <span class="xref">char[]</span> as you read
characters into it from the provided reader, but
internally it uses a circular buffer to only hold the
characters that haven&apos;t been freed yet. This is like a
PushbackReader, except you don&apos;t have to specify
up-front the max size of the buffer, but you do have to
periodically call <a class="xref" href="Lucene.Net.Analysis.Util.RollingCharBuffer.html#Lucene_Net_Analysis_Util_RollingCharBuffer_FreeBefore_System_Int32_">FreeBefore(Int32)</a>. </p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.StemmerUtil.html">StemmerUtil</a></h4>
<section><p>Some commonly-used stemming functions</p>
<div class="lucene-block lucene-internal">This is a Lucene.NET INTERNAL API, use at your own risk</div></section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.StopwordAnalyzerBase.html">StopwordAnalyzerBase</a></h4>
<section><p>Base class for <span class="xref">Lucene.Net.Analysis.Analyzer</span>s that need to make use of stopword sets. </p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.TokenFilterFactory.html">TokenFilterFactory</a></h4>
<section><p>Abstract parent class for analysis factories that create <span class="xref">Lucene.Net.Analysis.TokenFilter</span>
instances.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.TokenizerFactory.html">TokenizerFactory</a></h4>
<section><p>Abstract parent class for analysis factories that create <span class="xref">Lucene.Net.Analysis.Tokenizer</span>
instances.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.WordlistLoader.html">WordlistLoader</a></h4>
<section><p>Loader for text files that represent a list of stopwords.
<p>
<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Util.IOUtils.html">IOUtils</a> to obtain <span class="xref">System.IO.TextReader</span> instances.</p>
<div class="lucene-block lucene-internal">This is a Lucene.NET INTERNAL API, use at your own risk</div></section>
<h3 id="interfaces">Interfaces
</h3>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.IMultiTermAwareComponent.html">IMultiTermAwareComponent</a></h4>
<section><p>Add to any analysis factory component to allow returning an
analysis component factory for use with partial terms in prefix queries,
wildcard queries, range query endpoints, regex queries, etc.</p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoader.html">IResourceLoader</a></h4>
<section><p>Abstraction for loading resources (streams, files, and classes).</p>
</section>
<h4><a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoaderAware.html">IResourceLoaderAware</a></h4>
<section><p>Interface for a component that needs to be initialized by
an implementation of <a class="xref" href="Lucene.Net.Analysis.Util.IResourceLoader.html">IResourceLoader</a>.</p>
</section>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/blob/docs/4.8.0-beta00010/src/Lucene.Net.Analysis.Common/Analysis/Util/package.md/#L2" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright © 2020 Licensed to the Apache Software Foundation (ASF)
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
</body>
</html>