{
  "Lucene.Net.Analysis.Morfologik.html": {
    "href": "Lucene.Net.Analysis.Morfologik.html",
    "title": "Lucene.Net.Analysis.Morfologik | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Namespace Lucene.Net.Analysis.Morfologik <!-- 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. --> This package provides dictionary-driven lemmatization (\"accurate stemming\") filter and analyzer for the Polish Language, driven by the Morfologik library developed by Dawid Weiss and Marcin Miłkowski. For an introduction to Lucene's analysis API, see the <xref:Lucene.Net.Analysis> package documentation. The MorfologikFilter yields one or more terms for each token. Each of those terms is given the same position in the index. Classes MorfologikAnalyzer Lucene.Net.Analysis.Analyzer using Morfologik library. See: Morfologik project page MorfologikFilter Lucene.Net.Analysis.TokenFilter using Morfologik library to transform input tokens into lemma and morphosyntactic (POS) tokens. Applies to Polish only. MorfologikFilter contains a MorphosyntacticTagsAttribute , which provides morphosyntactic annotations for produced lemmas. See the Morfologik documentation for details. MorfologikFilterFactory Filter factory for MorfologikFilter . An explicit resource name of the dictionary ( \".dict\" ) can be provided via the dictionary attribute, as the example below demonstrates: <fieldType name=\"text_mylang\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.WhitespaceTokenizerFactory\"/> <filter class=\"solr.MorfologikFilterFactory\" dictionary=\"mylang.dict\" /> </analyzer> </fieldType> If the dictionary attribute is not provided, the Polish dictionary is loaded and used by default. See: Morfologik web site"
  },
  "Lucene.Net.Analysis.Morfologik.MorfologikAnalyzer.html": {
    "href": "Lucene.Net.Analysis.Morfologik.MorfologikAnalyzer.html",
    "title": "Class MorfologikAnalyzer | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Class MorfologikAnalyzer Lucene.Net.Analysis.Analyzer using Morfologik library. See: Morfologik project page Inheritance System.Object Lucene.Net.Analysis.Analyzer MorfologikAnalyzer Implements System.IDisposable Inherited Members Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, ReuseStrategy) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, Func<String, TextReader, TextReader>) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, Func<String, TextReader, TextReader>, ReuseStrategy) Analyzer.GetTokenStream(String, TextReader) Analyzer.GetTokenStream(String, String) Analyzer.InitReader(String, TextReader) Analyzer.GetPositionIncrementGap(String) Analyzer.GetOffsetGap(String) Lucene.Net.Analysis.Analyzer.Strategy Lucene.Net.Analysis.Analyzer.Dispose() Analyzer.Dispose(Boolean) Lucene.Net.Analysis.Analyzer.GLOBAL_REUSE_STRATEGY Lucene.Net.Analysis.Analyzer.PER_FIELD_REUSE_STRATEGY System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : Lucene.Net.Analysis.Morfologik Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public class MorfologikAnalyzer : Analyzer, IDisposable Constructors | Improve this Doc View Source MorfologikAnalyzer(LuceneVersion) Builds an analyzer with the default Morfologik's Polish dictionary. Declaration public MorfologikAnalyzer(LuceneVersion version) Parameters Type Name Description Lucene.Net.Util.LuceneVersion version Lucene compatibility version | Improve this Doc View Source MorfologikAnalyzer(LuceneVersion, Dictionary) Builds an analyzer with an explicit Morfologik.Stemming.Dictionary resource. See: https://github.com/morfologik/ Declaration public MorfologikAnalyzer(LuceneVersion version, Dictionary dictionary) Parameters Type Name Description Lucene.Net.Util.LuceneVersion version Lucene compatibility version Morfologik.Stemming.Dictionary dictionary A prebuilt automaton with inflected and base word forms. Methods | Improve this Doc View Source CreateComponents(String, TextReader) Creates a Lucene.Net.Analysis.TokenStreamComponents which tokenizes all the text in the provided reader . Declaration protected override TokenStreamComponents CreateComponents(string fieldName, TextReader reader) Parameters Type Name Description System.String fieldName Ignored field name. System.IO.TextReader reader Source of tokens. Returns Type Description Lucene.Net.Analysis.TokenStreamComponents A Lucene.Net.Analysis.TokenStreamComponents built from a Lucene.Net.Analysis.Standard.StandardTokenizer filtered with MorfologikFilter . Overrides Analyzer.CreateComponents(String, TextReader) Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.Morfologik.MorfologikFilter.html": {
    "href": "Lucene.Net.Analysis.Morfologik.MorfologikFilter.html",
    "title": "Class MorfologikFilter | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Class MorfologikFilter Lucene.Net.Analysis.TokenFilter using Morfologik library to transform input tokens into lemma and morphosyntactic (POS) tokens. Applies to Polish only. MorfologikFilter contains a MorphosyntacticTagsAttribute , which provides morphosyntactic annotations for produced lemmas. See the Morfologik documentation for details. Inheritance System.Object Lucene.Net.Util.AttributeSource Lucene.Net.Analysis.TokenStream Lucene.Net.Analysis.TokenFilter MorfologikFilter Implements System.IDisposable Inherited Members Lucene.Net.Analysis.TokenFilter.m_input Lucene.Net.Analysis.TokenFilter.End() TokenFilter.Dispose(Boolean) Lucene.Net.Analysis.TokenStream.Dispose() Lucene.Net.Util.AttributeSource.GetAttributeFactory() Lucene.Net.Util.AttributeSource.GetAttributeClassesEnumerator() Lucene.Net.Util.AttributeSource.GetAttributeImplsEnumerator() Lucene.Net.Util.AttributeSource.AddAttributeImpl(Lucene.Net.Util.Attribute) Lucene.Net.Util.AttributeSource.AddAttribute<T>() Lucene.Net.Util.AttributeSource.HasAttributes Lucene.Net.Util.AttributeSource.HasAttribute<T>() Lucene.Net.Util.AttributeSource.GetAttribute<T>() Lucene.Net.Util.AttributeSource.ClearAttributes() Lucene.Net.Util.AttributeSource.CaptureState() Lucene.Net.Util.AttributeSource.RestoreState(Lucene.Net.Util.AttributeSource.State) Lucene.Net.Util.AttributeSource.GetHashCode() AttributeSource.Equals(Object) AttributeSource.ReflectAsString(Boolean) Lucene.Net.Util.AttributeSource.ReflectWith(Lucene.Net.Util.IAttributeReflector) Lucene.Net.Util.AttributeSource.CloneAttributes() Lucene.Net.Util.AttributeSource.CopyTo(Lucene.Net.Util.AttributeSource) Lucene.Net.Util.AttributeSource.ToString() System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) Namespace : Lucene.Net.Analysis.Morfologik Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public class MorfologikFilter : TokenFilter, IDisposable Constructors | Improve this Doc View Source MorfologikFilter(TokenStream) Creates a filter with the default (Polish) dictionary. Declaration public MorfologikFilter(TokenStream input) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input Input token stream. | Improve this Doc View Source MorfologikFilter(TokenStream, Dictionary) Creates a filter with a given dictionary. Declaration public MorfologikFilter(TokenStream input, Dictionary dict) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input Input token stream. Morfologik.Stemming.Dictionary dict Morfologik.Stemming.Dictionary to use for stemming. Methods | Improve this Doc View Source IncrementToken() Retrieves the next token (possibly from the list of lemmas). Declaration public override sealed bool IncrementToken() Returns Type Description System.Boolean Overrides Lucene.Net.Analysis.TokenStream.IncrementToken() | Improve this Doc View Source Reset() Resets stems accumulator and hands over to superclass. Declaration public override void Reset() Overrides Lucene.Net.Analysis.TokenFilter.Reset() Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.Morfologik.MorfologikFilterFactory.html": {
    "href": "Lucene.Net.Analysis.Morfologik.MorfologikFilterFactory.html",
    "title": "Class MorfologikFilterFactory | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Class MorfologikFilterFactory Filter factory for MorfologikFilter . An explicit resource name of the dictionary ( \".dict\" ) can be provided via the dictionary attribute, as the example below demonstrates: <fieldType name=\"text_mylang\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.WhitespaceTokenizerFactory\"/> <filter class=\"solr.MorfologikFilterFactory\" dictionary=\"mylang.dict\" /> </analyzer> </fieldType> If the dictionary attribute is not provided, the Polish dictionary is loaded and used by default. See: Morfologik web site Inheritance System.Object Lucene.Net.Analysis.Util.AbstractAnalysisFactory Lucene.Net.Analysis.Util.TokenFilterFactory MorfologikFilterFactory Implements Lucene.Net.Analysis.Util.IResourceLoaderAware Inherited Members Lucene.Net.Analysis.Util.TokenFilterFactory.ForName(System.String, System.Collections.Generic.IDictionary<System.String, System.String>) Lucene.Net.Analysis.Util.TokenFilterFactory.LookupClass(System.String) Lucene.Net.Analysis.Util.TokenFilterFactory.AvailableTokenFilters Lucene.Net.Analysis.Util.TokenFilterFactory.ReloadTokenFilters() Lucene.Net.Analysis.Util.AbstractAnalysisFactory.LUCENE_MATCH_VERSION_PARAM Lucene.Net.Analysis.Util.AbstractAnalysisFactory.m_luceneMatchVersion Lucene.Net.Analysis.Util.AbstractAnalysisFactory.OriginalArgs Lucene.Net.Analysis.Util.AbstractAnalysisFactory.AssureMatchVersion() Lucene.Net.Analysis.Util.AbstractAnalysisFactory.LuceneMatchVersion Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Require(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Require(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Collections.Generic.ICollection<System.String>) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Require(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Collections.Generic.ICollection<System.String>, System.Boolean) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Get(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Get(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Collections.Generic.ICollection<System.String>) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Get(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Collections.Generic.ICollection<System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.Get(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Collections.Generic.ICollection<System.String>, System.String, System.Boolean) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.RequireInt32(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetInt32(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Int32) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.RequireBoolean(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetBoolean(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Boolean) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.RequireSingle(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetSingle(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Single) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.RequireChar(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetChar(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Char) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetSet(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetPattern(System.Collections.Generic.IDictionary<System.String, System.String>, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetCulture(System.Collections.Generic.IDictionary<System.String, System.String>, System.String, System.Globalization.CultureInfo) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetWordSet(Lucene.Net.Analysis.Util.IResourceLoader, System.String, System.Boolean) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetLines(Lucene.Net.Analysis.Util.IResourceLoader, System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetSnowballWordSet(Lucene.Net.Analysis.Util.IResourceLoader, System.String, System.Boolean) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.SplitFileNames(System.String) Lucene.Net.Analysis.Util.AbstractAnalysisFactory.GetClassArg() Lucene.Net.Analysis.Util.AbstractAnalysisFactory.IsExplicitLuceneMatchVersion System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : Lucene.Net.Analysis.Morfologik Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public class MorfologikFilterFactory : TokenFilterFactory, IResourceLoaderAware Constructors | Improve this Doc View Source MorfologikFilterFactory(IDictionary<String, String>) Creates a new MorfologikFilterFactory Declaration public MorfologikFilterFactory(IDictionary<string, string> args) Parameters Type Name Description System.Collections.Generic.IDictionary < System.String , System.String > args Fields | Improve this Doc View Source DICTIONARY_ATTRIBUTE Dictionary resource attribute (should have \".dict\" suffix), loaded from Lucene.Net.Analysis.Util.IResourceLoader . Declaration public const string DICTIONARY_ATTRIBUTE = \"dictionary\" Field Value Type Description System.String Methods | Improve this Doc View Source Create(TokenStream) Declaration public override TokenStream Create(TokenStream ts) Parameters Type Name Description Lucene.Net.Analysis.TokenStream ts Returns Type Description Lucene.Net.Analysis.TokenStream Overrides Lucene.Net.Analysis.Util.TokenFilterFactory.Create(Lucene.Net.Analysis.TokenStream) | Improve this Doc View Source Inform(IResourceLoader) Declaration public virtual void Inform(IResourceLoader loader) Parameters Type Name Description Lucene.Net.Analysis.Util.IResourceLoader loader Implements Lucene.Net.Analysis.Util.IResourceLoaderAware"
  },
  "Lucene.Net.Analysis.Morfologik.TokenAttributes.html": {
    "href": "Lucene.Net.Analysis.Morfologik.TokenAttributes.html",
    "title": "Namespace Lucene.Net.Analysis.Morfologik.TokenAttributes | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Namespace Lucene.Net.Analysis.Morfologik.TokenAttributes Classes MorphosyntacticTagsAttribute Morphosyntactic annotations for surface forms. Interfaces IMorphosyntacticTagsAttribute Morfologik provides morphosyntactic annotations for surface forms. For the exact format and description of these, see the project's documentation."
  },
  "Lucene.Net.Analysis.Morfologik.TokenAttributes.IMorphosyntacticTagsAttribute.html": {
    "href": "Lucene.Net.Analysis.Morfologik.TokenAttributes.IMorphosyntacticTagsAttribute.html",
    "title": "Interface IMorphosyntacticTagsAttribute | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Interface IMorphosyntacticTagsAttribute Morfologik provides morphosyntactic annotations for surface forms. For the exact format and description of these, see the project's documentation. Inherited Members Lucene.Net.Util.IAttribute.CopyTo(Lucene.Net.Util.IAttribute) Namespace : Lucene.Net.Analysis.Morfologik.TokenAttributes Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public interface IMorphosyntacticTagsAttribute : IAttribute Properties | Improve this Doc View Source Tags Gets or sets the POS tag of the term. A single word may have multiple POS tags, depending on the interpretation (context disambiguation is typically needed to determine which particular tag is appropriate). The default value (no-value) is null. Returns a list of POS tags corresponding to current lemma. Declaration IList<StringBuilder> Tags { get; set; } Property Value Type Description System.Collections.Generic.IList < System.Text.StringBuilder > Methods | Improve this Doc View Source Clear() Clear to default value. Declaration void Clear()"
  },
  "Lucene.Net.Analysis.Morfologik.TokenAttributes.MorphosyntacticTagsAttribute.html": {
    "href": "Lucene.Net.Analysis.Morfologik.TokenAttributes.MorphosyntacticTagsAttribute.html",
    "title": "Class MorphosyntacticTagsAttribute | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Class MorphosyntacticTagsAttribute Morphosyntactic annotations for surface forms. Inheritance System.Object Lucene.Net.Util.Attribute MorphosyntacticTagsAttribute Implements IMorphosyntacticTagsAttribute Lucene.Net.Util.IAttribute Inherited Members Attribute.ReflectAsString(Boolean) Lucene.Net.Util.Attribute.ToString() System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) Namespace : Lucene.Net.Analysis.Morfologik.TokenAttributes Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public class MorphosyntacticTagsAttribute : Attribute, IMorphosyntacticTagsAttribute, IAttribute Constructors | Improve this Doc View Source MorphosyntacticTagsAttribute() Initializes this attribute with no tags Declaration public MorphosyntacticTagsAttribute() Properties | Improve this Doc View Source Tags Gets or sets the POS tag of the term. If you need a copy of this char sequence, copy its contents (and clone System.Text.StringBuilder s) because it changes with each new term to avoid unnecessary memory allocations. Declaration public virtual IList<StringBuilder> Tags { get; set; } Property Value Type Description System.Collections.Generic.IList < System.Text.StringBuilder > Methods | Improve this Doc View Source Clear() Declaration public override void Clear() Overrides Lucene.Net.Util.Attribute.Clear() | Improve this Doc View Source Clone() Declaration public override object Clone() Returns Type Description System.Object Overrides Lucene.Net.Util.Attribute.Clone() | Improve this Doc View Source CopyTo(IAttribute) Declaration public override void CopyTo(IAttribute target) Parameters Type Name Description Lucene.Net.Util.IAttribute target Overrides Lucene.Net.Util.Attribute.CopyTo(Lucene.Net.Util.IAttribute) | Improve this Doc View Source Equals(Object) Declaration public override bool Equals(object other) Parameters Type Name Description System.Object other Returns Type Description System.Boolean Overrides System.Object.Equals(System.Object) | Improve this Doc View Source GetHashCode() Declaration public override int GetHashCode() Returns Type Description System.Int32 Overrides System.Object.GetHashCode() | Improve this Doc View Source ReflectWith(IAttributeReflector) Declaration public override void ReflectWith(IAttributeReflector reflector) Parameters Type Name Description Lucene.Net.Util.IAttributeReflector reflector Overrides Lucene.Net.Util.Attribute.ReflectWith(Lucene.Net.Util.IAttributeReflector) Implements IMorphosyntacticTagsAttribute Lucene.Net.Util.IAttribute See Also IMorphosyntacticTagsAttribute"
  },
  "Lucene.Net.Analysis.Uk.html": {
    "href": "Lucene.Net.Analysis.Uk.html",
    "title": "Namespace Lucene.Net.Analysis.Uk | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Namespace Lucene.Net.Analysis.Uk Classes UkrainianMorfologikAnalyzer A dictionary-based Lucene.Net.Analysis.Analyzer for Ukrainian."
  },
  "Lucene.Net.Analysis.Uk.UkrainianMorfologikAnalyzer.html": {
    "href": "Lucene.Net.Analysis.Uk.UkrainianMorfologikAnalyzer.html",
    "title": "Class UkrainianMorfologikAnalyzer | Apache Lucene.NET 4.8.0-beta00013 Documentation",
    "keywords": "Class UkrainianMorfologikAnalyzer A dictionary-based Lucene.Net.Analysis.Analyzer for Ukrainian. Inheritance System.Object Lucene.Net.Analysis.Analyzer Lucene.Net.Analysis.Util.StopwordAnalyzerBase UkrainianMorfologikAnalyzer Implements System.IDisposable Inherited Members Lucene.Net.Analysis.Util.StopwordAnalyzerBase.m_stopwords Lucene.Net.Analysis.Util.StopwordAnalyzerBase.m_matchVersion Lucene.Net.Analysis.Util.StopwordAnalyzerBase.StopwordSet Lucene.Net.Analysis.Util.StopwordAnalyzerBase.LoadStopwordSet(System.Boolean, System.Type, System.String, System.String) Lucene.Net.Analysis.Util.StopwordAnalyzerBase.LoadStopwordSet(System.IO.FileInfo, Lucene.Net.Util.LuceneVersion) Lucene.Net.Analysis.Util.StopwordAnalyzerBase.LoadStopwordSet(System.IO.TextReader, Lucene.Net.Util.LuceneVersion) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, ReuseStrategy) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, Func<String, TextReader, TextReader>) Analyzer.NewAnonymous(Func<String, TextReader, TokenStreamComponents>, Func<String, TextReader, TextReader>, ReuseStrategy) Analyzer.GetTokenStream(String, TextReader) Analyzer.GetTokenStream(String, String) Analyzer.GetPositionIncrementGap(String) Analyzer.GetOffsetGap(String) Lucene.Net.Analysis.Analyzer.Strategy Lucene.Net.Analysis.Analyzer.Dispose() Analyzer.Dispose(Boolean) Lucene.Net.Analysis.Analyzer.GLOBAL_REUSE_STRATEGY Lucene.Net.Analysis.Analyzer.PER_FIELD_REUSE_STRATEGY System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : Lucene.Net.Analysis.Uk Assembly : Lucene.Net.Analysis.Morfologik.dll Syntax public sealed class UkrainianMorfologikAnalyzer : StopwordAnalyzerBase, IDisposable Constructors | Improve this Doc View Source UkrainianMorfologikAnalyzer(LuceneVersion) Builds an analyzer with the default stop words: DEFAULT_STOPWORD_FILE . Declaration public UkrainianMorfologikAnalyzer(LuceneVersion matchVersion) Parameters Type Name Description Lucene.Net.Util.LuceneVersion matchVersion Lucene.Net.Util.LuceneVersion to match. | Improve this Doc View Source UkrainianMorfologikAnalyzer(LuceneVersion, CharArraySet) Builds an analyzer with the given stop words. Declaration public UkrainianMorfologikAnalyzer(LuceneVersion matchVersion, CharArraySet stopwords) Parameters Type Name Description Lucene.Net.Util.LuceneVersion matchVersion Lucene.Net.Util.LuceneVersion to match. Lucene.Net.Analysis.Util.CharArraySet stopwords A stopword set. | Improve this Doc View Source UkrainianMorfologikAnalyzer(LuceneVersion, CharArraySet, CharArraySet) Builds an analyzer with the given stop words. If a non-empty stem exclusion set is provided this analyzer will add a Lucene.Net.Analysis.Miscellaneous.SetKeywordMarkerFilter before stemming. Declaration public UkrainianMorfologikAnalyzer(LuceneVersion matchVersion, CharArraySet stopwords, CharArraySet stemExclusionSet) Parameters Type Name Description Lucene.Net.Util.LuceneVersion matchVersion Lucene.Net.Util.LuceneVersion to match. Lucene.Net.Analysis.Util.CharArraySet stopwords A stopword set. Lucene.Net.Analysis.Util.CharArraySet stemExclusionSet A set of terms not to be stemmed. Fields | Improve this Doc View Source DEFAULT_STOPWORD_FILE File containing default Ukrainian stopwords. Declaration public const string DEFAULT_STOPWORD_FILE = \"stopwords.txt\" Field Value Type Description System.String Properties | Improve this Doc View Source DefaultStopSet Returns an unmodifiable instance of the default stop words set. Declaration public static CharArraySet DefaultStopSet { get; } Property Value Type Description Lucene.Net.Analysis.Util.CharArraySet Default stop words set. Methods | Improve this Doc View Source CreateComponents(String, TextReader) Creates a Lucene.Net.Analysis.TokenStreamComponents which tokenizes all the text in the provided System.IO.TextReader . Declaration protected override TokenStreamComponents CreateComponents(string fieldName, TextReader reader) Parameters Type Name Description System.String fieldName System.IO.TextReader reader Returns Type Description Lucene.Net.Analysis.TokenStreamComponents A Lucene.Net.Analysis.TokenStreamComponents built from a Lucene.Net.Analysis.Standard.StandardTokenizer filtered with Lucene.Net.Analysis.Core.LowerCaseFilter , Lucene.Net.Analysis.Core.StopFilter , Lucene.Net.Analysis.Miscellaneous.SetKeywordMarkerFilter if a stem exclusion set is provided and MorfologikFilter on the Ukrainian dictionary. Overrides Analyzer.CreateComponents(String, TextReader) | Improve this Doc View Source InitReader(String, TextReader) Declaration protected override TextReader InitReader(string fieldName, TextReader reader) Parameters Type Name Description System.String fieldName System.IO.TextReader reader Returns Type Description System.IO.TextReader Overrides Analyzer.InitReader(String, TextReader) Implements System.IDisposable"
  }
}