blob: 4a7cf566db89238f8194876d05ef577084b4cb35 [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.Util.Fst
| Apache Lucene.NET 4.8.0-beta00013 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.Util.Fst
| Apache Lucene.NET 4.8.0-beta00013 Documentation ">
<meta name="generator" content="docfx 2.56.2.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="misc/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">
<span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
<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.Util.Fst">
<h1 id="Lucene_Net_Util_Fst" data-uid="Lucene.Net.Util.Fst" class="text-break">Namespace Lucene.Net.Util.Fst
</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>Misc FST classes.</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.Util.Fst.ListOfOutputs-1.html">ListOfOutputs&lt;T&gt;</a></h4>
<section><p>Wraps another Outputs implementation and encodes one or
more of its output values. You can use this when a single
input may need to map to more than one output,
maintaining order: pass the same input with a different
output by calling <a class="xref" href="https://lucenenet.apache.org/docs/4.8.0-beta00013/api/core/Lucene.Net.Util.Fst.Builder-1.html#Lucene_Net_Util_Fst_Builder_1_Add_Lucene_Net_Util_Int32sRef__0_">Add(Int32sRef, T)</a> multiple
times. The builder will then combine the outputs using
the <span class="xref">Lucene.Net.Util.Fst.Outputs&lt;T&gt;.Merge(T, T)</span> method.</p>
<p>The resulting FST may not be minimal when an input has
more than one output, as this requires pushing all
multi-output values to a final state.
</p>
<p>NOTE: the only way to create multiple outputs is to
add the same input to the FST multiple times in a row. This is
how the FST maps a single input to multiple outputs (e.g. you
cannot pass a List&lt;Object&gt; to <a class="xref" href="https://lucenenet.apache.org/docs/4.8.0-beta00013/api/core/Lucene.Net.Util.Fst.Builder-1.html#Lucene_Net_Util_Fst_Builder_1_Add_Lucene_Net_Util_Int32sRef__0_">Add(Int32sRef, T)</a>). If
your outputs are longs, and you need at most 2, then use
<a class="xref" href="Lucene.Net.Util.Fst.UpToTwoPositiveInt64Outputs.html">UpToTwoPositiveInt64Outputs</a> instead since it stores
the outputs more compactly (by stealing a bit from each
long value).
</p>
<p>NOTE: this cannot wrap itself (ie you cannot make an
FST with List&lt;List&lt;Object&gt;&gt; outputs using this).
@lucene.experimental
</p>
</section>
<h4><a class="xref" href="Lucene.Net.Util.Fst.UpToTwoPositiveInt64Outputs.html">UpToTwoPositiveInt64Outputs</a></h4>
<section><p>An FST <span class="xref">Lucene.Net.Util.Fst.Outputs&lt;T&gt;</span> implementation where each output
is one or two non-negative long values. If it&apos;s a
<span class="xref">System.Single</span> output, <span class="xref">System.Nullable&lt;T&gt;</span> is
returned; else, <a class="xref" href="Lucene.Net.Util.Fst.UpToTwoPositiveInt64Outputs.TwoInt64s.html">UpToTwoPositiveInt64Outputs.TwoInt64s</a>. Order
is preserved in the <a class="xref" href="Lucene.Net.Util.Fst.UpToTwoPositiveInt64Outputs.TwoInt64s.html">UpToTwoPositiveInt64Outputs.TwoInt64s</a> case, ie .first is the first
input/output added to <a class="xref" href="https://lucenenet.apache.org/docs/4.8.0-beta00013/api/core/Lucene.Net.Util.Fst.Builder-1.html">Builder&lt;T&gt;</a>, and .second is the
second. You cannot store 0 output with this (that&apos;s
reserved to mean &quot;no output&quot;)!</p>
<p><p>NOTE: the only way to create a TwoLongs output is to
add the same input to the FST twice in a row. This is
how the FST maps a single input to two outputs (e.g. you
cannot pass a <a class="xref" href="Lucene.Net.Util.Fst.UpToTwoPositiveInt64Outputs.TwoInt64s.html">UpToTwoPositiveInt64Outputs.TwoInt64s</a> to <a class="xref" href="https://lucenenet.apache.org/docs/4.8.0-beta00013/api/core/Lucene.Net.Util.Fst.Builder-1.html#Lucene_Net_Util_Fst_Builder_1_Add_Lucene_Net_Util_Int32sRef__0_">Add(Int32sRef, T)</a>. If you
need more than two then use <a class="xref" href="Lucene.Net.Util.Fst.ListOfOutputs-1.html">ListOfOutputs&lt;T&gt;</a>, but if
you only have at most 2 then this implementation will
require fewer bytes as it steals one bit from each long
value.</p>
<p>
<p>NOTE: the resulting FST is not guaranteed to be minimal!
See <a class="xref" href="https://lucenenet.apache.org/docs/4.8.0-beta00013/api/core/Lucene.Net.Util.Fst.Builder-1.html">Builder&lt;T&gt;</a>.
</p>
<p>
NOTE: This was UpToTwoPositiveIntOutputs in Lucene - the data type (int) was wrong there - it should have been long
</p></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.Util.Fst.UpToTwoPositiveInt64Outputs.TwoInt64s.html">UpToTwoPositiveInt64Outputs.TwoInt64s</a></h4>
<section><p>Holds two long outputs.
<p>
NOTE: This was TwoLongs in Lucene</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-beta00013/src/Lucene.Net.Misc/Util/Fst/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 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
</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>