﻿<!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.Search.Suggest
   | Apache Lucene.NET 4.8.0-beta00008 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Lucene.Net.Search.Suggest
   | Apache Lucene.NET 4.8.0-beta00008 Documentation ">
    <meta name="generator" content="docfx 2.50.0.0">
    
    <link rel="shortcut icon" href="../../logo/favicon.ico">
    <link rel="stylesheet" href="../../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../../styles/docfx.css">
    <link rel="stylesheet" href="../../styles/main.css">
    <meta property="docfx:navrel" content="../../toc.html">
    <meta property="docfx:tocrel" content="../toc.html">
    
    <meta property="docfx:rel" content="../../">
    
  </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="../../index.html">
                <img id="logo" class="svg" src="../../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" id="breadcrumb">
            <ul class="breadcrumb">
              <li></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.Search.Suggest">
  
  <h1 id="Lucene_Net_Search_Suggest" data-uid="Lucene.Net.Search.Suggest" class="text-break">Namespace Lucene.Net.Search.Suggest
  </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>Support for Autocomplete/Autosuggest</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.Search.Suggest.BufferedInputIterator.html">BufferedInputIterator</a></h4>
      <section><p>This wrapper buffers incoming elements.</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.Search.Suggest.BufferingTermFreqIteratorWrapper.html">BufferingTermFreqIteratorWrapper</a></h4>
      <section><p>This wrapper buffers incoming elements.</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.Search.Suggest.DocumentDictionary.html">DocumentDictionary</a></h4>
      <section><p><p>
Dictionary with terms, weights, payload (optional) and contexts (optional)
information taken from stored/indexed fields in a Lucene index.
</p>
<strong>NOTE:</strong> 
<ul><li>
    The term and (optionally) payload fields have to be
    stored
</li><li>
  The weight field can be stored or can be a <a class="xref" href="../Lucene.Net/Lucene.Net.Index.NumericDocValues.html">NumericDocValues</a>.
  If the weight field is not defined, the value of the weight is <code>0</code>
</li><li>
  if any of the term or (optionally) payload fields supplied
  do not have a value for a document, then the document is 
  skipped by the dictionary
</li></ul></p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.DocumentDictionary.DocumentInputIterator.html">DocumentDictionary.DocumentInputIterator</a></h4>
      <section><p>Implements <a class="xref" href="Lucene.Net.Search.Suggest.IInputIterator.html">IInputIterator</a> from stored fields. </p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.DocumentValueSourceDictionary.html">DocumentValueSourceDictionary</a></h4>
      <section><p>
Dictionary with terms and optionally payload information 
taken from stored fields in a Lucene index. Similar to 
<a class="xref" href="Lucene.Net.Search.Suggest.DocumentDictionary.html">DocumentDictionary</a>, except it obtains the weight
of the terms in a document based on a <a class="xref" href="../Lucene.Net.Queries/Lucene.Net.Queries.Function.ValueSource.html">ValueSource</a>.
</p>
<strong>NOTE:</strong> 
<ul><li>
    The term and (optionally) payload fields have to be
    stored
</li><li>
  if the term or (optionally) payload fields supplied
  do not have a value for a document, then the document is 
  rejected by the dictionary
</li></ul>
<p>
In practice the <a class="xref" href="../Lucene.Net.Queries/Lucene.Net.Queries.Function.ValueSource.html">ValueSource</a> will likely be obtained
using the lucene expression module. The following example shows
how to create a <a class="xref" href="../Lucene.Net.Queries/Lucene.Net.Queries.Function.ValueSource.html">ValueSource</a> from a simple addition of two
fields:
<pre><code>  Expression expression = JavascriptCompiler.Compile(&quot;f1 + f2&quot;);
  SimpleBindings bindings = new SimpleBindings();
  bindings.Add(new SortField(&quot;f1&quot;, SortField.Type_e.LONG));
  bindings.Add(new SortField(&quot;f2&quot;, SortField.Type_e.LONG));
  ValueSource valueSource = expression.GetValueSource(bindings);</code></pre>
</p>

</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.EmptyInputIterator.html">EmptyInputIterator</a></h4>
      <section><p>Singleton <a class="xref" href="Lucene.Net.Search.Suggest.IInputIterator.html">IInputIterator</a> that iterates over 0 BytesRefs.</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.FileDictionary.html">FileDictionary</a></h4>
      <section><p>Dictionary represented by a text file.</p>
<p>Format allowed: 1 entry per line:</p>
<p>An entry can be: </p>
<ol><li>suggestion</li><li>suggestion <span class="xref">Lucene.Net.Search.Suggest.FileDictionary.fieldDelimiter</span> weight</li><li>suggestion <span class="xref">Lucene.Net.Search.Suggest.FileDictionary.fieldDelimiter</span> weight <span class="xref">Lucene.Net.Search.Suggest.FileDictionary.fieldDelimiter</span> payload</li></ol>
where the default <span class="xref">Lucene.Net.Search.Suggest.FileDictionary.fieldDelimiter</span> is <a class="xref" href="Lucene.Net.Search.Suggest.FileDictionary.html#Lucene_Net_Search_Suggest_FileDictionary_DEFAULT_FIELD_DELIMITER">DEFAULT_FIELD_DELIMITER</a> (a tab)
<p>
<strong>NOTE:</strong> 
<ol><li>In order to have payload enabled, the first entry has to have a payload</li><li>If the weight for an entry is not specified then a value of 1 is used</li><li>A payload cannot be specified without having the weight specified for an entry</li><li>If the payload for an entry is not specified (assuming payload is enabled) 
 then an empty payload is returned</li><li>An entry cannot have more than two <span class="xref">Lucene.Net.Search.Suggest.FileDictionary.fieldDelimiter</span>s</li></ol>
</p>
<code>Example:</code><p>
word1 word2 TAB 100 TAB payload1<p>
word3 TAB 101<p>
word4 word3 TAB 102<p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.InMemorySorter.html">InMemorySorter</a></h4>
      <section><p>An <a class="xref" href="Lucene.Net.Search.Suggest.Fst.IBytesRefSorter.html">IBytesRefSorter</a> that keeps all the entries in memory.</p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><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.Search.Suggest.InputIteratorWrapper.html">InputIteratorWrapper</a></h4>
      <section><p>Wraps a <a class="xref" href="../Lucene.Net/Lucene.Net.Util.IBytesRefIterator.html">IBytesRefIterator</a> as a suggester <a class="xref" href="Lucene.Net.Search.Suggest.IInputIterator.html">IInputIterator</a>, with all weights
set to <code>1</code> and carries no payload</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.Lookup.html">Lookup</a></h4>
      <section><p>Simple Lookup interface for <span class="xref">System.String</span> suggestions.</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.Search.Suggest.Lookup.LookupPriorityQueue.html">Lookup.LookupPriorityQueue</a></h4>
      <section><p>A <a class="xref" href="../Lucene.Net/Lucene.Net.Util.PriorityQueue-1.html">PriorityQueue&lt;T&gt;</a> collecting a fixed size of high priority <a class="xref" href="Lucene.Net.Search.Suggest.Lookup.LookupResult.html">Lookup.LookupResult</a>s.</p>
</section>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.Lookup.LookupResult.html">Lookup.LookupResult</a></h4>
      <section><p>Result of a lookup.</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.Search.Suggest.SortedInputIterator.html">SortedInputIterator</a></h4>
      <section><p>This wrapper buffers incoming elements and makes sure they are sorted based on given comparer.</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.Search.Suggest.SortedTermFreqIteratorWrapper.html">SortedTermFreqIteratorWrapper</a></h4>
      <section><p>This wrapper buffers incoming elements and makes sure they are sorted based on given comparer.</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.Search.Suggest.UnsortedInputIterator.html">UnsortedInputIterator</a></h4>
      <section><p>This wrapper buffers the incoming elements and makes sure they are in
random order.</p>
<div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section>
    <h3 id="interfaces">Interfaces
  </h3>
      <h4><a class="xref" href="Lucene.Net.Search.Suggest.IInputIterator.html">IInputIterator</a></h4>
      <section><p>Interface for enumerating term,weight,payload triples for suggester consumption;
currently only <a class="xref" href="Lucene.Net.Search.Suggest.Analyzing.AnalyzingSuggester.html">AnalyzingSuggester</a>, <a class="xref" href="Lucene.Net.Search.Suggest.Analyzing.FuzzySuggester.html">FuzzySuggester</a>
and <a class="xref" href="Lucene.Net.Search.Suggest.Analyzing.AnalyzingInfixSuggester.html">AnalyzingInfixSuggester</a> support payloads.</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-beta00008/src/Lucene.Net.Suggest/Suggest/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="../../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../../styles/docfx.js"></script>
    <script type="text/javascript" src="../../styles/main.js"></script>
  </body>
</html>
