{
  "Lucene.Net.Analysis.OpenNlp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.html",
    "title": "Namespace Lucene.Net.Analysis.OpenNlp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Namespace Lucene.Net.Analysis.OpenNlp <!-- 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. --> OpenNLP Library Integration Classes OpenNLPChunkerFilter Run OpenNLP chunker. Prerequisite: the OpenNLPTokenizer and OpenNLPPOSFilter must precede this filter. Tags terms in the TypeAttribute, replacing the POS tags previously put there by OpenNLPPOSFilter . OpenNLPChunkerFilterFactory Factory for OpenNLPChunkerFilter . <fieldType name=\"text_opennlp_chunked\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> <filter class=\"solr.OpenNLPPOSFilterFactory\" posTaggerModel=\"filename\"/> <filter class=\"solr.OpenNLPChunkerFilterFactory\" chunkerModel=\"filename\"/> </analyzer> </fieldType> OpenNLPLemmatizerFilter Runs OpenNLP dictionary-based and/or MaxEnt lemmatizers. Both a dictionary-based lemmatizer and a MaxEnt lemmatizer are supported, via the \"dictionary\" and \"lemmatizerModel\" params, respectively. If both are configured, the dictionary-based lemmatizer is tried first, and then the MaxEnt lemmatizer is consulted for out-of-vocabulary tokens. The dictionary file must be encoded as UTF-8, with one entry per line, in the form word[tab]lemma[tab]part-of-speech OpenNLPLemmatizerFilterFactory Factory for OpenNLPLemmatizerFilter . <fieldType name=\"text_opennlp_lemma\" class=\"solr.TextField\" positionIncrementGap=\"100\" <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> /> <filter class=\"solr.OpenNLPLemmatizerFilterFactory\" dictionary=\"filename\" lemmatizerModel=\"filename\"/> </analyzer> </fieldType> OpenNLPPOSFilter Run OpenNLP POS tagger. Tags all terms in the ITypeAttribute . OpenNLPPOSFilterFactory Factory for OpenNLPPOSFilter . <fieldType name=\"text_opennlp_pos\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> <filter class=\"solr.OpenNLPPOSFilterFactory\" posTaggerModel=\"filename\"/> </analyzer> </fieldType> OpenNLPSentenceBreakIterator A that splits sentences using an OpenNLP sentence chunking model. OpenNLPTokenizer Run OpenNLP SentenceDetector and Lucene.Net.Analysis.Tokenizer . The last token in each sentence is marked by setting the EOS_FLAG_BIT in the IFlagsAttribute ; following filters can use this information to apply operations to tokens one sentence at a time. OpenNLPTokenizerFactory Factory for OpenNLPTokenizer . <fieldType name=\"text_opennlp\" class=\"solr.TextField\" positionIncrementGap=\"100\" <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> </analyzer> </fieldType>"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPChunkerFilter.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPChunkerFilter.html",
    "title": "Class OpenNLPChunkerFilter | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPChunkerFilter Run OpenNLP chunker. Prerequisite: the OpenNLPTokenizer and OpenNLPPOSFilter must precede this filter. Tags terms in the TypeAttribute, replacing the POS tags previously put there by OpenNLPPOSFilter . Inheritance System.Object Lucene.Net.Util.AttributeSource Lucene.Net.Analysis.TokenStream Lucene.Net.Analysis.TokenFilter OpenNLPChunkerFilter 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() Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public sealed class OpenNLPChunkerFilter : TokenFilter, IDisposable Constructors | Improve this Doc View Source OpenNLPChunkerFilter(TokenStream, NLPChunkerOp) Declaration public OpenNLPChunkerFilter(TokenStream input, NLPChunkerOp chunkerOp) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input NLPChunkerOp chunkerOp Methods | Improve this Doc View Source IncrementToken() Declaration public override sealed bool IncrementToken() Returns Type Description System.Boolean Overrides Lucene.Net.Analysis.TokenStream.IncrementToken() | Improve this Doc View Source Reset() Declaration public override void Reset() Overrides Lucene.Net.Analysis.TokenFilter.Reset() Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPChunkerFilterFactory.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPChunkerFilterFactory.html",
    "title": "Class OpenNLPChunkerFilterFactory | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPChunkerFilterFactory Factory for OpenNLPChunkerFilter . <fieldType name=\"text_opennlp_chunked\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> <filter class=\"solr.OpenNLPPOSFilterFactory\" posTaggerModel=\"filename\"/> <filter class=\"solr.OpenNLPChunkerFilterFactory\" chunkerModel=\"filename\"/> </analyzer> </fieldType> Inheritance System.Object Lucene.Net.Analysis.Util.AbstractAnalysisFactory Lucene.Net.Analysis.Util.TokenFilterFactory OpenNLPChunkerFilterFactory 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 Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class OpenNLPChunkerFilterFactory : TokenFilterFactory, IResourceLoaderAware Constructors | Improve this Doc View Source OpenNLPChunkerFilterFactory(IDictionary<String, String>) Declaration public OpenNLPChunkerFilterFactory(IDictionary<string, string> args) Parameters Type Name Description IDictionary < System.String , System.String > args Fields | Improve this Doc View Source CHUNKER_MODEL Declaration public const string CHUNKER_MODEL = null Field Value Type Description System.String Methods | Improve this Doc View Source Create(TokenStream) Declaration public override TokenStream Create(TokenStream input) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input 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.OpenNlp.OpenNLPLemmatizerFilter.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPLemmatizerFilter.html",
    "title": "Class OpenNLPLemmatizerFilter | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPLemmatizerFilter Runs OpenNLP dictionary-based and/or MaxEnt lemmatizers. Both a dictionary-based lemmatizer and a MaxEnt lemmatizer are supported, via the \"dictionary\" and \"lemmatizerModel\" params, respectively. If both are configured, the dictionary-based lemmatizer is tried first, and then the MaxEnt lemmatizer is consulted for out-of-vocabulary tokens. The dictionary file must be encoded as UTF-8, with one entry per line, in the form word[tab]lemma[tab]part-of-speech Inheritance System.Object Lucene.Net.Util.AttributeSource Lucene.Net.Analysis.TokenStream Lucene.Net.Analysis.TokenFilter OpenNLPLemmatizerFilter 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() Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class OpenNLPLemmatizerFilter : TokenFilter, IDisposable Constructors | Improve this Doc View Source OpenNLPLemmatizerFilter(TokenStream, NLPLemmatizerOp) Declaration public OpenNLPLemmatizerFilter(TokenStream input, NLPLemmatizerOp lemmatizerOp) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input NLPLemmatizerOp lemmatizerOp Methods | Improve this Doc View Source IncrementToken() Declaration public override sealed bool IncrementToken() Returns Type Description System.Boolean Overrides Lucene.Net.Analysis.TokenStream.IncrementToken() | Improve this Doc View Source Reset() Declaration public override void Reset() Overrides Lucene.Net.Analysis.TokenFilter.Reset() Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPLemmatizerFilterFactory.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPLemmatizerFilterFactory.html",
    "title": "Class OpenNLPLemmatizerFilterFactory | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPLemmatizerFilterFactory Factory for OpenNLPLemmatizerFilter . <fieldType name=\"text_opennlp_lemma\" class=\"solr.TextField\" positionIncrementGap=\"100\" <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> /> <filter class=\"solr.OpenNLPLemmatizerFilterFactory\" dictionary=\"filename\" lemmatizerModel=\"filename\"/> </analyzer> </fieldType> Inheritance System.Object Lucene.Net.Analysis.Util.AbstractAnalysisFactory Lucene.Net.Analysis.Util.TokenFilterFactory OpenNLPLemmatizerFilterFactory 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 Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class OpenNLPLemmatizerFilterFactory : TokenFilterFactory, IResourceLoaderAware Constructors | Improve this Doc View Source OpenNLPLemmatizerFilterFactory(IDictionary<String, String>) Declaration public OpenNLPLemmatizerFilterFactory(IDictionary<string, string> args) Parameters Type Name Description IDictionary < System.String , System.String > args Fields | Improve this Doc View Source DICTIONARY Declaration public const string DICTIONARY = null Field Value Type Description System.String | Improve this Doc View Source LEMMATIZER_MODEL Declaration public const string LEMMATIZER_MODEL = null Field Value Type Description System.String Methods | Improve this Doc View Source Create(TokenStream) Declaration public override TokenStream Create(TokenStream input) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input 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.OpenNlp.OpenNLPPOSFilter.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPPOSFilter.html",
    "title": "Class OpenNLPPOSFilter | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPPOSFilter Run OpenNLP POS tagger. Tags all terms in the ITypeAttribute . Inheritance System.Object Lucene.Net.Util.AttributeSource Lucene.Net.Analysis.TokenStream Lucene.Net.Analysis.TokenFilter OpenNLPPOSFilter 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() Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public sealed class OpenNLPPOSFilter : TokenFilter, IDisposable Constructors | Improve this Doc View Source OpenNLPPOSFilter(TokenStream, NLPPOSTaggerOp) Declaration public OpenNLPPOSFilter(TokenStream input, NLPPOSTaggerOp posTaggerOp) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input NLPPOSTaggerOp posTaggerOp Methods | Improve this Doc View Source IncrementToken() Declaration public override sealed bool IncrementToken() Returns Type Description System.Boolean Overrides Lucene.Net.Analysis.TokenStream.IncrementToken() | Improve this Doc View Source Reset() Declaration public override void Reset() Overrides Lucene.Net.Analysis.TokenFilter.Reset() Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPPOSFilterFactory.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPPOSFilterFactory.html",
    "title": "Class OpenNLPPOSFilterFactory | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPPOSFilterFactory Factory for OpenNLPPOSFilter . <fieldType name=\"text_opennlp_pos\" class=\"solr.TextField\" positionIncrementGap=\"100\"> <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> <filter class=\"solr.OpenNLPPOSFilterFactory\" posTaggerModel=\"filename\"/> </analyzer> </fieldType> Inheritance System.Object Lucene.Net.Analysis.Util.AbstractAnalysisFactory Lucene.Net.Analysis.Util.TokenFilterFactory OpenNLPPOSFilterFactory 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 Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class OpenNLPPOSFilterFactory : TokenFilterFactory, IResourceLoaderAware Constructors | Improve this Doc View Source OpenNLPPOSFilterFactory(IDictionary<String, String>) Declaration public OpenNLPPOSFilterFactory(IDictionary<string, string> args) Parameters Type Name Description IDictionary < System.String , System.String > args Fields | Improve this Doc View Source POS_TAGGER_MODEL Declaration public const string POS_TAGGER_MODEL = null Field Value Type Description System.String Methods | Improve this Doc View Source Create(TokenStream) Declaration public override TokenStream Create(TokenStream input) Parameters Type Name Description Lucene.Net.Analysis.TokenStream input 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.OpenNlp.OpenNLPSentenceBreakIterator.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPSentenceBreakIterator.html",
    "title": "Class OpenNLPSentenceBreakIterator | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPSentenceBreakIterator A that splits sentences using an OpenNLP sentence chunking model. Inheritance System.Object OpenNLPSentenceBreakIterator Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public sealed class OpenNLPSentenceBreakIterator : BreakIterator Constructors | Improve this Doc View Source OpenNLPSentenceBreakIterator(NLPSentenceDetectorOp) Declaration public OpenNLPSentenceBreakIterator(NLPSentenceDetectorOp sentenceOp) Parameters Type Name Description NLPSentenceDetectorOp sentenceOp Properties | Improve this Doc View Source Current Declaration public override int Current { get; } Property Value Type Description System.Int32 | Improve this Doc View Source Text Declaration public override CharacterIterator Text { get; } Property Value Type Description CharacterIterator Methods | Improve this Doc View Source First() Declaration public override int First() Returns Type Description System.Int32 | Improve this Doc View Source Following(Int32) Declaration public override int Following(int pos) Parameters Type Name Description System.Int32 pos Returns Type Description System.Int32 | Improve this Doc View Source Last() Declaration public override int Last() Returns Type Description System.Int32 | Improve this Doc View Source Next() Declaration public override int Next() Returns Type Description System.Int32 | Improve this Doc View Source Next(Int32) Declaration public override int Next(int n) Parameters Type Name Description System.Int32 n Returns Type Description System.Int32 | Improve this Doc View Source Preceding(Int32) Declaration public override int Preceding(int pos) Parameters Type Name Description System.Int32 pos Returns Type Description System.Int32 | Improve this Doc View Source Previous() Declaration public override int Previous() Returns Type Description System.Int32 | Improve this Doc View Source SetText(CharacterIterator) Declaration public override void SetText(CharacterIterator newText) Parameters Type Name Description CharacterIterator newText"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPTokenizer.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPTokenizer.html",
    "title": "Class OpenNLPTokenizer | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPTokenizer Run OpenNLP SentenceDetector and Lucene.Net.Analysis.Tokenizer . The last token in each sentence is marked by setting the EOS_FLAG_BIT in the IFlagsAttribute ; following filters can use this information to apply operations to tokens one sentence at a time. Inheritance System.Object Lucene.Net.Util.AttributeSource Lucene.Net.Analysis.TokenStream Lucene.Net.Analysis.Tokenizer Lucene.Net.Analysis.Util.SegmentingTokenizerBase OpenNLPTokenizer Implements System.IDisposable Inherited Members Lucene.Net.Analysis.Util.SegmentingTokenizerBase.BUFFERMAX Lucene.Net.Analysis.Util.SegmentingTokenizerBase.m_buffer Lucene.Net.Analysis.Util.SegmentingTokenizerBase.m_offset Lucene.Net.Analysis.Util.SegmentingTokenizerBase.IncrementToken() Lucene.Net.Analysis.Util.SegmentingTokenizerBase.End() Lucene.Net.Analysis.Util.SegmentingTokenizerBase.IsSafeEnd(System.Char) Lucene.Net.Analysis.Tokenizer.m_input Tokenizer.CorrectOffset(Int32) Tokenizer.SetReader(TextReader) 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() Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public sealed class OpenNLPTokenizer : SegmentingTokenizerBase, IDisposable Constructors | Improve this Doc View Source OpenNLPTokenizer(AttributeSource.AttributeFactory, TextReader, NLPSentenceDetectorOp, NLPTokenizerOp) Declaration public OpenNLPTokenizer(AttributeSource.AttributeFactory factory, TextReader reader, NLPSentenceDetectorOp sentenceOp, NLPTokenizerOp tokenizerOp) Parameters Type Name Description Lucene.Net.Util.AttributeSource.AttributeFactory factory TextReader reader NLPSentenceDetectorOp sentenceOp NLPTokenizerOp tokenizerOp | Improve this Doc View Source OpenNLPTokenizer(TextReader, NLPSentenceDetectorOp, NLPTokenizerOp) Creates a new OpenNLPTokenizer Declaration public OpenNLPTokenizer(TextReader reader, NLPSentenceDetectorOp sentenceOp, NLPTokenizerOp tokenizerOp) Parameters Type Name Description TextReader reader NLPSentenceDetectorOp sentenceOp NLPTokenizerOp tokenizerOp Fields | Improve this Doc View Source EOS_FLAG_BIT Declaration public static int EOS_FLAG_BIT Field Value Type Description System.Int32 Methods | Improve this Doc View Source Dispose(Boolean) Declaration protected override void Dispose(bool disposing) Parameters Type Name Description System.Boolean disposing Overrides Tokenizer.Dispose(Boolean) | Improve this Doc View Source IncrementWord() Declaration protected override bool IncrementWord() Returns Type Description System.Boolean Overrides Lucene.Net.Analysis.Util.SegmentingTokenizerBase.IncrementWord() | Improve this Doc View Source Reset() Declaration public override void Reset() Overrides Lucene.Net.Analysis.Util.SegmentingTokenizerBase.Reset() | Improve this Doc View Source SetNextSentence(Int32, Int32) Declaration protected override void SetNextSentence(int sentenceStart, int sentenceEnd) Parameters Type Name Description System.Int32 sentenceStart System.Int32 sentenceEnd Overrides Lucene.Net.Analysis.Util.SegmentingTokenizerBase.SetNextSentence(System.Int32, System.Int32) Implements System.IDisposable"
  },
  "Lucene.Net.Analysis.OpenNlp.OpenNLPTokenizerFactory.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.OpenNLPTokenizerFactory.html",
    "title": "Class OpenNLPTokenizerFactory | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPTokenizerFactory Factory for OpenNLPTokenizer . <fieldType name=\"text_opennlp\" class=\"solr.TextField\" positionIncrementGap=\"100\" <analyzer> <tokenizer class=\"solr.OpenNLPTokenizerFactory\" sentenceModel=\"filename\" tokenizerModel=\"filename\"/> </analyzer> </fieldType> Inheritance System.Object Lucene.Net.Analysis.Util.AbstractAnalysisFactory Lucene.Net.Analysis.Util.TokenizerFactory OpenNLPTokenizerFactory Implements Lucene.Net.Analysis.Util.IResourceLoaderAware Inherited Members Lucene.Net.Analysis.Util.TokenizerFactory.ForName(System.String, System.Collections.Generic.IDictionary<System.String, System.String>) Lucene.Net.Analysis.Util.TokenizerFactory.LookupClass(System.String) Lucene.Net.Analysis.Util.TokenizerFactory.AvailableTokenizers Lucene.Net.Analysis.Util.TokenizerFactory.ReloadTokenizers() Lucene.Net.Analysis.Util.TokenizerFactory.Create(System.IO.TextReader) Lucene.Net.Analysis.Util.TokenizerFactory.Create(Lucene.Net.Util.AttributeSource.AttributeFactory, System.IO.TextReader) 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 Namespace : Lucene.Net.Analysis.OpenNlp Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class OpenNLPTokenizerFactory : TokenizerFactory, IResourceLoaderAware Constructors | Improve this Doc View Source OpenNLPTokenizerFactory(IDictionary<String, String>) Declaration public OpenNLPTokenizerFactory(IDictionary<string, string> args) Parameters Type Name Description IDictionary < System.String , System.String > args Fields | Improve this Doc View Source SENTENCE_MODEL Declaration public const string SENTENCE_MODEL = null Field Value Type Description System.String | Improve this Doc View Source TOKENIZER_MODEL Declaration public const string TOKENIZER_MODEL = null Field Value Type Description System.String Methods | Improve this Doc View Source Create(AttributeSource.AttributeFactory, TextReader) Declaration public override Tokenizer Create(AttributeSource.AttributeFactory factory, TextReader reader) Parameters Type Name Description Lucene.Net.Util.AttributeSource.AttributeFactory factory TextReader reader Returns Type Description Lucene.Net.Analysis.Tokenizer | 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.OpenNlp.Tools.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.html",
    "title": "Namespace Lucene.Net.Analysis.OpenNlp.Tools | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Namespace Lucene.Net.Analysis.OpenNlp.Tools Classes NLPChunkerOp Supply OpenNLP Chunking tool Requires binary models from OpenNLP project on SourceForge. NLPLemmatizerOp Supply OpenNLP Lemmatizer tools. Both a dictionary-based lemmatizer and a MaxEnt lemmatizer are supported. If both are configured, the dictionary-based lemmatizer is tried first, and then the MaxEnt lemmatizer is consulted for out-of-vocabulary tokens. The MaxEnt implementation requires binary models from OpenNLP project on SourceForge. NLPNERTaggerOp Supply OpenNLP Named Entity Resolution tool Requires binary models from OpenNLP project on SourceForge. Usage: from the OpenNLP documentation : \"The NameFinderME class is not thread safe, it must only be called from one thread. To use multiple threads multiple NameFinderME instances sharing the same model instance can be created. The input text should be segmented into documents, sentences and tokens. To perform entity detection an application calls the find method for every sentence in the document. After every document clearAdaptiveData must be called to clear the adaptive data in the feature generators. Not calling clearAdaptiveData can lead to a sharp drop in the detection rate after a few documents.\" NLPPOSTaggerOp Supply OpenNLP Parts-Of-Speech Tagging tool. Requires binary models from OpenNLP project on SourceForge. NLPSentenceDetectorOp Supply OpenNLP Sentence Detector tool. Requires binary models from OpenNLP project on SourceForge. NLPTokenizerOp Supply OpenNLP Sentence Tokenizer tool. Requires binary models from OpenNLP project on SourceForge. OpenNLPOpsFactory Supply OpenNLP Named Entity Recognizer. Cache model file objects. Assumes model files are thread-safe."
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPChunkerOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPChunkerOp.html",
    "title": "Class NLPChunkerOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPChunkerOp Supply OpenNLP Chunking tool Requires binary models from OpenNLP project on SourceForge. Inheritance System.Object NLPChunkerOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPChunkerOp : object Constructors | Improve this Doc View Source NLPChunkerOp(ChunkerModel) Declaration public NLPChunkerOp(ChunkerModel chunkerModel) Parameters Type Name Description ChunkerModel chunkerModel Methods | Improve this Doc View Source GetChunks(String[], String[], Double[]) Declaration public virtual string[] GetChunks(string[] words, string[] tags, double[] probs) Parameters Type Name Description System.String [] words System.String [] tags System.Double [] probs Returns Type Description System.String []"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPLemmatizerOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPLemmatizerOp.html",
    "title": "Class NLPLemmatizerOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPLemmatizerOp Supply OpenNLP Lemmatizer tools. Both a dictionary-based lemmatizer and a MaxEnt lemmatizer are supported. If both are configured, the dictionary-based lemmatizer is tried first, and then the MaxEnt lemmatizer is consulted for out-of-vocabulary tokens. The MaxEnt implementation requires binary models from OpenNLP project on SourceForge. Inheritance System.Object NLPLemmatizerOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPLemmatizerOp : object Constructors | Improve this Doc View Source NLPLemmatizerOp(Stream, LemmatizerModel) Declaration public NLPLemmatizerOp(Stream dictionary, LemmatizerModel lemmatizerModel) Parameters Type Name Description Stream dictionary LemmatizerModel lemmatizerModel Methods | Improve this Doc View Source Lemmatize(String[], String[]) Declaration public virtual string[] Lemmatize(string[] words, string[] postags) Parameters Type Name Description System.String [] words System.String [] postags Returns Type Description System.String []"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPNERTaggerOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPNERTaggerOp.html",
    "title": "Class NLPNERTaggerOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPNERTaggerOp Supply OpenNLP Named Entity Resolution tool Requires binary models from OpenNLP project on SourceForge. Usage: from the OpenNLP documentation : \"The NameFinderME class is not thread safe, it must only be called from one thread. To use multiple threads multiple NameFinderME instances sharing the same model instance can be created. The input text should be segmented into documents, sentences and tokens. To perform entity detection an application calls the find method for every sentence in the document. After every document clearAdaptiveData must be called to clear the adaptive data in the feature generators. Not calling clearAdaptiveData can lead to a sharp drop in the detection rate after a few documents.\" Inheritance System.Object NLPNERTaggerOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPNERTaggerOp : object Constructors | Improve this Doc View Source NLPNERTaggerOp(TokenNameFinderModel) Declaration public NLPNERTaggerOp(TokenNameFinderModel model) Parameters Type Name Description TokenNameFinderModel model Methods | Improve this Doc View Source GetNames(String[]) Declaration public virtual Span[] GetNames(string[] words) Parameters Type Name Description System.String [] words Returns Type Description Span [] | Improve this Doc View Source Reset() Declaration public virtual void Reset()"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPPOSTaggerOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPPOSTaggerOp.html",
    "title": "Class NLPPOSTaggerOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPPOSTaggerOp Supply OpenNLP Parts-Of-Speech Tagging tool. Requires binary models from OpenNLP project on SourceForge. Inheritance System.Object NLPPOSTaggerOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPPOSTaggerOp : object Constructors | Improve this Doc View Source NLPPOSTaggerOp(POSModel) Declaration public NLPPOSTaggerOp(POSModel model) Parameters Type Name Description POSModel model Methods | Improve this Doc View Source GetPOSTags(String[]) Declaration public virtual string[] GetPOSTags(string[] words) Parameters Type Name Description System.String [] words Returns Type Description System.String []"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPSentenceDetectorOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPSentenceDetectorOp.html",
    "title": "Class NLPSentenceDetectorOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPSentenceDetectorOp Supply OpenNLP Sentence Detector tool. Requires binary models from OpenNLP project on SourceForge. Inheritance System.Object NLPSentenceDetectorOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPSentenceDetectorOp : object Constructors | Improve this Doc View Source NLPSentenceDetectorOp() Declaration public NLPSentenceDetectorOp() | Improve this Doc View Source NLPSentenceDetectorOp(SentenceModel) Declaration public NLPSentenceDetectorOp(SentenceModel model) Parameters Type Name Description SentenceModel model Methods | Improve this Doc View Source SplitSentences(String) Declaration public virtual Span[] SplitSentences(string line) Parameters Type Name Description System.String line Returns Type Description Span []"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.NLPTokenizerOp.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.NLPTokenizerOp.html",
    "title": "Class NLPTokenizerOp | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class NLPTokenizerOp Supply OpenNLP Sentence Tokenizer tool. Requires binary models from OpenNLP project on SourceForge. Inheritance System.Object NLPTokenizerOp Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public class NLPTokenizerOp : object Constructors | Improve this Doc View Source NLPTokenizerOp() Declaration public NLPTokenizerOp() | Improve this Doc View Source NLPTokenizerOp(TokenizerModel) Declaration public NLPTokenizerOp(TokenizerModel model) Parameters Type Name Description TokenizerModel model Methods | Improve this Doc View Source GetTerms(String) Declaration public virtual Span[] GetTerms(string sentence) Parameters Type Name Description System.String sentence Returns Type Description Span []"
  },
  "Lucene.Net.Analysis.OpenNlp.Tools.OpenNLPOpsFactory.html": {
    "href": "Lucene.Net.Analysis.OpenNlp.Tools.OpenNLPOpsFactory.html",
    "title": "Class OpenNLPOpsFactory | Apache Lucene.NET 4.8.0-beta00012 Documentation",
    "keywords": "Class OpenNLPOpsFactory Supply OpenNLP Named Entity Recognizer. Cache model file objects. Assumes model files are thread-safe. Inheritance System.Object OpenNLPOpsFactory Namespace : Lucene.Net.Analysis.OpenNlp.Tools Assembly : Lucene.Net.Analysis.OpenNLP.dll Syntax public static class OpenNLPOpsFactory : object Methods | Improve this Doc View Source ClearModels() Declaration public static void ClearModels() | Improve this Doc View Source GetChunker(String) Declaration public static NLPChunkerOp GetChunker(string modelName) Parameters Type Name Description System.String modelName Returns Type Description NLPChunkerOp | Improve this Doc View Source GetChunkerModel(String, IResourceLoader) Declaration public static ChunkerModel GetChunkerModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description ChunkerModel | Improve this Doc View Source GetLemmatizer(String, String) Declaration public static NLPLemmatizerOp GetLemmatizer(string dictionaryFile, string lemmatizerModelFile) Parameters Type Name Description System.String dictionaryFile System.String lemmatizerModelFile Returns Type Description NLPLemmatizerOp | Improve this Doc View Source GetLemmatizerDictionary(String, IResourceLoader) Declaration public static string GetLemmatizerDictionary(string dictionaryFile, IResourceLoader loader) Parameters Type Name Description System.String dictionaryFile Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description System.String | Improve this Doc View Source GetLemmatizerModel(String, IResourceLoader) Declaration public static LemmatizerModel GetLemmatizerModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description LemmatizerModel | Improve this Doc View Source GetNERTagger(String) Declaration public static NLPNERTaggerOp GetNERTagger(string modelName) Parameters Type Name Description System.String modelName Returns Type Description NLPNERTaggerOp | Improve this Doc View Source GetNERTaggerModel(String, IResourceLoader) Declaration public static TokenNameFinderModel GetNERTaggerModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description TokenNameFinderModel | Improve this Doc View Source GetPOSTagger(String) Declaration public static NLPPOSTaggerOp GetPOSTagger(string modelName) Parameters Type Name Description System.String modelName Returns Type Description NLPPOSTaggerOp | Improve this Doc View Source GetPOSTaggerModel(String, IResourceLoader) Declaration public static POSModel GetPOSTaggerModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description POSModel | Improve this Doc View Source GetSentenceDetector(String) Declaration public static NLPSentenceDetectorOp GetSentenceDetector(string modelName) Parameters Type Name Description System.String modelName Returns Type Description NLPSentenceDetectorOp | Improve this Doc View Source GetSentenceModel(String, IResourceLoader) Declaration public static SentenceModel GetSentenceModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description SentenceModel | Improve this Doc View Source GetTokenizer(String) Declaration public static NLPTokenizerOp GetTokenizer(string modelName) Parameters Type Name Description System.String modelName Returns Type Description NLPTokenizerOp | Improve this Doc View Source GetTokenizerModel(String, IResourceLoader) Declaration public static TokenizerModel GetTokenizerModel(string modelName, IResourceLoader loader) Parameters Type Name Description System.String modelName Lucene.Net.Analysis.Util.IResourceLoader loader Returns Type Description TokenizerModel"
  }
}