Fork me on GitHub
  • API

    Show / Hide Table of Contents

    Class AnalyzingInfixSuggester

    Analyzes the input text and then suggests matches based on prefix matches to any tokens in the indexed text. This also highlights the tokens that match.

    This suggester supports payloads. Matches are sorted only by the suggest weight; it would be nice to support blended score + weight sort in the future. This means this suggester best applies when there is a strong a-priori ranking of all the suggestions.

    This suggester supports contexts, however the contexts must be valid utf8 (arbitrary binary terms will not work).

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Inheritance
    object
    Lookup
    AnalyzingInfixSuggester
    BlendedInfixSuggester
    Implements
    IDisposable
    Inherited Members
    Lookup.CHARSEQUENCE_COMPARER
    Lookup.Build(IDictionary)
    Lookup.Load(Stream)
    Lookup.Store(Stream)
    Lookup.DoLookup(string, bool, int)
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Lucene.Net.Search.Suggest.Analyzing
    Assembly: Lucene.Net.Suggest.dll
    Syntax
    public class AnalyzingInfixSuggester : Lookup, IDisposable

    Constructors

    AnalyzingInfixSuggester(IAnalyzingInfixSuggesterIndexWriterConfigFactory, LuceneVersion, Directory, Analyzer, Analyzer, int, bool)

    Create a new instance, loading from a previously built AnalyzingInfixSuggester directory, if it exists. This directory must be private to the infix suggester (i.e., not an external Lucene index). Note that Dispose() will also dispose the provided directory.

    Declaration
    public AnalyzingInfixSuggester(IAnalyzingInfixSuggesterIndexWriterConfigFactory indexWriterConfigFactory, LuceneVersion matchVersion, Directory dir, Analyzer indexAnalyzer, Analyzer queryAnalyzer, int minPrefixChars, bool commitOnBuild)
    Parameters
    Type Name Description
    IAnalyzingInfixSuggesterIndexWriterConfigFactory indexWriterConfigFactory

    Factory for creating the Lucene.Net.Index.IndexWriterConfig.

    LuceneVersion matchVersion
    Directory dir
    Analyzer indexAnalyzer
    Analyzer queryAnalyzer
    int minPrefixChars

    Minimum number of leading characters before Lucene.Net.Search.PrefixQuery is used (default 4). Prefixes shorter than this are indexed as character ngrams (increasing index size but making lookups faster).

    bool commitOnBuild

    Call commit after the index has finished building. This would persist the suggester index to disk and future instances of this suggester can use this pre-built dictionary.

    AnalyzingInfixSuggester(LuceneVersion, Directory, Analyzer)

    Create a new instance, loading from a previously built AnalyzingInfixSuggester directory, if it exists. This directory must be private to the infix suggester (i.e., not an external Lucene index). Note that Dispose() will also dispose the provided directory.

    Declaration
    public AnalyzingInfixSuggester(LuceneVersion matchVersion, Directory dir, Analyzer analyzer)
    Parameters
    Type Name Description
    LuceneVersion matchVersion
    Directory dir
    Analyzer analyzer

    AnalyzingInfixSuggester(LuceneVersion, Directory, Analyzer, Analyzer, int)

    Create a new instance, loading from a previously built AnalyzingInfixSuggester directory, if it exists. This directory must be private to the infix suggester (i.e., not an external Lucene index). Note that Dispose() will also dispose the provided directory.

    Declaration
    public AnalyzingInfixSuggester(LuceneVersion matchVersion, Directory dir, Analyzer indexAnalyzer, Analyzer queryAnalyzer, int minPrefixChars)
    Parameters
    Type Name Description
    LuceneVersion matchVersion
    Directory dir
    Analyzer indexAnalyzer
    Analyzer queryAnalyzer
    int minPrefixChars

    Minimum number of leading characters before Lucene.Net.Search.PrefixQuery is used (default 4). Prefixes shorter than this are indexed as character ngrams (increasing index size but making lookups faster).

    AnalyzingInfixSuggester(LuceneVersion, Directory, Analyzer, Analyzer, int, bool)

    Create a new instance, loading from a previously built AnalyzingInfixSuggester directory, if it exists. This directory must be private to the infix suggester (i.e., not an external Lucene index). Note that Dispose() will also dispose the provided directory.

    Declaration
    public AnalyzingInfixSuggester(LuceneVersion matchVersion, Directory dir, Analyzer indexAnalyzer, Analyzer queryAnalyzer, int minPrefixChars, bool commitOnBuild)
    Parameters
    Type Name Description
    LuceneVersion matchVersion
    Directory dir
    Analyzer indexAnalyzer
    Analyzer queryAnalyzer
    int minPrefixChars

    Minimum number of leading characters before Lucene.Net.Search.PrefixQuery is used (default 4). Prefixes shorter than this are indexed as character ngrams (increasing index size but making lookups faster).

    bool commitOnBuild

    Call commit after the index has finished building. This would persist the suggester index to disk and future instances of this suggester can use this pre-built dictionary.

    Fields

    CONTEXTS_FIELD_NAME

    Field name used for the indexed context, as a Lucene.Net.Documents.StringField and a Lucene.Net.Documents.SortedSetDocValuesField, for filtering.

    Declaration
    protected const string CONTEXTS_FIELD_NAME = "contexts"
    Field Value
    Type Description
    string

    DEFAULT_MIN_PREFIX_CHARS

    Default minimum number of leading characters before PrefixQuery is used (4).

    Declaration
    public const int DEFAULT_MIN_PREFIX_CHARS = 4
    Field Value
    Type Description
    int

    EXACT_TEXT_FIELD_NAME

    Field name used for the indexed text, as a Lucene.Net.Documents.StringField, for exact lookup.

    Declaration
    protected const string EXACT_TEXT_FIELD_NAME = "exacttext"
    Field Value
    Type Description
    string

    TEXT_FIELD_NAME

    Field name used for the indexed text.

    Declaration
    protected const string TEXT_FIELD_NAME = "text"
    Field Value
    Type Description
    string

    m_indexAnalyzer

    Analyzer used at index time

    Declaration
    protected readonly Analyzer m_indexAnalyzer
    Field Value
    Type Description
    Analyzer

    m_queryAnalyzer

    Analyzer used at search time

    Declaration
    protected readonly Analyzer m_queryAnalyzer
    Field Value
    Type Description
    Analyzer

    m_searcherMgr

    Lucene.Net.Search.IndexSearcher used for lookups.

    Declaration
    protected SearcherManager m_searcherMgr
    Field Value
    Type Description
    SearcherManager

    Properties

    Count

    Get the number of entries the lookup was built with

    Declaration
    public override long Count { get; }
    Property Value
    Type Description
    long

    total number of suggester entries

    Overrides
    Lookup.Count

    Methods

    Add(BytesRef, IEnumerable<BytesRef>, long, BytesRef)

    Adds a new suggestion. Be sure to use Update(BytesRef, IEnumerable<BytesRef>, long, BytesRef) instead if you want to replace a previous suggestion. After adding or updating a batch of new suggestions, you must call Refresh() in the end in order to see the suggestions in DoLookup(string, IEnumerable<BytesRef>, int, bool, bool)

    Declaration
    public virtual void Add(BytesRef text, IEnumerable<BytesRef> contexts, long weight, BytesRef payload)
    Parameters
    Type Name Description
    BytesRef text
    IEnumerable<BytesRef> contexts
    long weight
    BytesRef payload

    AddNonMatch(StringBuilder, string)

    Called while highlighting a single result, to append a non-matching chunk of text from the suggestion to the provided fragments list.

    Declaration
    protected virtual void AddNonMatch(StringBuilder sb, string text)
    Parameters
    Type Name Description
    StringBuilder sb

    The StringBuilder to append to

    string text

    The text chunk to add

    AddPrefixMatch(StringBuilder, string, string, string)

    Called while highlighting a single result, to append a matched prefix token, to the provided fragments list.

    Declaration
    protected virtual void AddPrefixMatch(StringBuilder sb, string surface, string analyzed, string prefixToken)
    Parameters
    Type Name Description
    StringBuilder sb

    The StringBuilder to append to

    string surface

    The fragment of the surface form (indexed during Build(IInputEnumerator), corresponding to this match

    string analyzed

    The analyzed token that matched

    string prefixToken

    The prefix of the token that matched

    AddWholeMatch(StringBuilder, string, string)

    Called while highlighting a single result, to append the whole matched token to the provided fragments list.

    Declaration
    protected virtual void AddWholeMatch(StringBuilder sb, string surface, string analyzed)
    Parameters
    Type Name Description
    StringBuilder sb

    The StringBuilder to append to

    string surface

    The surface form (original) text

    string analyzed

    The analyzed token corresponding to the surface form text

    Build(IInputEnumerator)

    Builds up a new internal Lookup representation based on the given IInputEnumerator. The implementation might re-sort the data internally.

    Declaration
    public override void Build(IInputEnumerator enumerator)
    Parameters
    Type Name Description
    IInputEnumerator enumerator
    Overrides
    Lookup.Build(IInputEnumerator)

    Commit()

    Analyzes the input text and then suggests matches based on prefix matches to any tokens in the indexed text. This also highlights the tokens that match.

    This suggester supports payloads. Matches are sorted only by the suggest weight; it would be nice to support blended score + weight sort in the future. This means this suggester best applies when there is a strong a-priori ranking of all the suggestions.

    This suggester supports contexts, however the contexts must be valid utf8 (arbitrary binary terms will not work).

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public void Commit()

    CreateResults(IndexSearcher, TopFieldDocs, int, string, bool, ICollection<string>, string)

    Create the results based on the search hits. Can be overridden by subclass to add particular behavior (e.g. weight transformation)

    Declaration
    protected virtual IList<Lookup.LookupResult> CreateResults(IndexSearcher searcher, TopFieldDocs hits, int num, string charSequence, bool doHighlight, ICollection<string> matchedTokens, string prefixToken)
    Parameters
    Type Name Description
    IndexSearcher searcher
    TopFieldDocs hits
    int num
    string charSequence
    bool doHighlight
    ICollection<string> matchedTokens
    string prefixToken
    Returns
    Type Description
    IList<Lookup.LookupResult>
    Exceptions
    Type Condition
    IOException

    If there are problems reading fields from the underlying Lucene index.

    Dispose()

    Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

    Declaration
    public void Dispose()

    Dispose(bool)

    Analyzes the input text and then suggests matches based on prefix matches to any tokens in the indexed text. This also highlights the tokens that match.

    This suggester supports payloads. Matches are sorted only by the suggest weight; it would be nice to support blended score + weight sort in the future. This means this suggester best applies when there is a strong a-priori ranking of all the suggestions.

    This suggester supports contexts, however the contexts must be valid utf8 (arbitrary binary terms will not work).

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    protected virtual void Dispose(bool disposing)
    Parameters
    Type Name Description
    bool disposing

    DoLookup(string, IEnumerable<BytesRef>, bool, int)

    Look up a key and return possible completion for this key.

    Declaration
    public override IList<Lookup.LookupResult> DoLookup(string key, IEnumerable<BytesRef> contexts, bool onlyMorePopular, int num)
    Parameters
    Type Name Description
    string key

    lookup key. Depending on the implementation this may be a prefix, misspelling, or even infix.

    IEnumerable<BytesRef> contexts

    contexts to filter the lookup by, or null if all contexts are allowed; if the suggestion contains any of the contexts, it's a match

    bool onlyMorePopular

    return only more popular results

    int num

    maximum number of results to return

    Returns
    Type Description
    IList<Lookup.LookupResult>

    a list of possible completions, with their relative weight (e.g. popularity)

    Overrides
    Lookup.DoLookup(string, IEnumerable<BytesRef>, bool, int)

    DoLookup(string, IEnumerable<BytesRef>, int, bool, bool)

    Retrieve suggestions, specifying whether all terms must match (allTermsRequired) and whether the hits should be highlighted (doHighlight).

    Declaration
    public virtual IList<Lookup.LookupResult> DoLookup(string key, IEnumerable<BytesRef> contexts, int num, bool allTermsRequired, bool doHighlight)
    Parameters
    Type Name Description
    string key
    IEnumerable<BytesRef> contexts
    int num
    bool allTermsRequired
    bool doHighlight
    Returns
    Type Description
    IList<Lookup.LookupResult>

    DoLookup(string, int, bool, bool)

    Lookup, without any context.

    Declaration
    public virtual IList<Lookup.LookupResult> DoLookup(string key, int num, bool allTermsRequired, bool doHighlight)
    Parameters
    Type Name Description
    string key
    int num
    bool allTermsRequired
    bool doHighlight
    Returns
    Type Description
    IList<Lookup.LookupResult>

    FinishQuery(BooleanQuery, bool)

    Subclass can override this to tweak the Query before searching.

    Declaration
    protected virtual Query FinishQuery(BooleanQuery bq, bool allTermsRequired)
    Parameters
    Type Name Description
    BooleanQuery bq
    bool allTermsRequired
    Returns
    Type Description
    Query

    GetDirectory(DirectoryInfo)

    Subclass can override to choose a specific Lucene.Net.Store.Directory implementation.

    Declaration
    protected virtual Directory GetDirectory(DirectoryInfo path)
    Parameters
    Type Name Description
    DirectoryInfo path
    Returns
    Type Description
    Directory

    GetLastTokenQuery(string)

    This is called if the last token isn't ended (e.g. user did not type a space after it). Return an appropriate Lucene.Net.Search.Query clause to add to the Lucene.Net.Search.BooleanQuery.

    Declaration
    protected virtual Query GetLastTokenQuery(string token)
    Parameters
    Type Name Description
    string token
    Returns
    Type Description
    Query

    GetSizeInBytes()

    Get the size of the underlying lookup implementation in memory

    Declaration
    public override long GetSizeInBytes()
    Returns
    Type Description
    long

    ram size of the lookup implementation in bytes

    Overrides
    Lookup.GetSizeInBytes()

    GetTextFieldType()

    Subclass can override this method to change the field type of the text field e.g. to change the index options

    Declaration
    protected virtual FieldType GetTextFieldType()
    Returns
    Type Description
    FieldType

    Highlight(string, ICollection<string>, string)

    Override this method to customize the Object representing a single highlighted suggestions; the result is set on each HighlightKey member.

    Declaration
    protected virtual object Highlight(string text, ICollection<string> matchedTokens, string prefixToken)
    Parameters
    Type Name Description
    string text
    ICollection<string> matchedTokens
    string prefixToken
    Returns
    Type Description
    object

    Load(DataInput)

    Discard current lookup data and load it from a previously saved copy. Optional operation.

    Declaration
    public override bool Load(DataInput @out)
    Parameters
    Type Name Description
    DataInput out
    Returns
    Type Description
    bool

    true if completed successfully, false if unsuccessful or not supported.

    Overrides
    Lookup.Load(DataInput)
    Exceptions
    Type Condition
    IOException

    when fatal IO error occurs.

    Refresh()

    Reopens the underlying searcher; it's best to "batch up" many additions/updates, and then call refresh once in the end.

    Declaration
    public virtual void Refresh()

    Store(DataOutput)

    Persist the constructed lookup data to a directory. Optional operation.

    Declaration
    public override bool Store(DataOutput @in)
    Parameters
    Type Name Description
    DataOutput in
    Returns
    Type Description
    bool

    true if successful, false if unsuccessful or not supported.

    Overrides
    Lookup.Store(DataOutput)
    Exceptions
    Type Condition
    IOException

    when fatal IO error occurs.

    Update(BytesRef, IEnumerable<BytesRef>, long, BytesRef)

    Updates a previous suggestion, matching the exact same text as before. Use this to change the weight or payload of an already added suggstion. If you know this text is not already present you can use Add(BytesRef, IEnumerable<BytesRef>, long, BytesRef) instead. After adding or updating a batch of new suggestions, you must call Refresh() in the end in order to see the suggestions in DoLookup(string, IEnumerable<BytesRef>, int, bool, bool)

    Declaration
    public virtual void Update(BytesRef text, IEnumerable<BytesRef> contexts, long weight, BytesRef payload)
    Parameters
    Type Name Description
    BytesRef text
    IEnumerable<BytesRef> contexts
    long weight
    BytesRef payload

    Implements

    IDisposable
    Back to top Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0
    Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation.
    All other marks mentioned may be trademarks or registered trademarks of their respective owners.